pythonffmpeg

Why is ffmpeg warning "Guessed Channel Layout for Input Stream #0.0 : mono"?


I am using ffmpeg to read and write raw audio to/from my python script. Both the save and load commands I use produce the warning "Guessed Channel Layout for Input Stream #0.0 : mono"? This is despite that fact that I am telling ffmpeg using -ac 1 before both the input and output that there is only one channel. I saw some other answers where I should set -guess_layout_max 0 but this seems like a hack since I don't want ffmpeg to guess; I am telling it exactly how many channels there are with -ac 1. It should not need to make any guess.

My save command is formatted as follows with r being the sample rate and f being the file I want to save the raw audio to. I am sending raw audio via stdin from python over a pipe.

ffmpeg_cmd = 'ffmpeg -hide_banner -loglevel warning -y -ar %d -ac 1 -f u16le -i pipe: -ac 1 %s' % (r, shlex.quote(f))

Likewise my load command is the following with ffmpeg reading from f and writing raw audio to stdout.

ffmpeg_cmd = 'ffmpeg -hide_banner -loglevel warning -i %s -ar %d -ac 1 -f u16le -c:a pcm_u16le -ac 1 pipe:' % (shlex.quote(f), r)


Solution

  • -ac sets no. of channels, not their layout, of which there can be multiple for each value of a channel count.

    Use the option -channel_layout.

    ffmpeg -hide_banner -loglevel warning -y -ar %d -ac 1 -channel_layout mono -f u16le -i pipe: ...