将 RAW 输出传输到另一个进程时,FFmpeg 中的音频比特率、音频通道和音频采样频率设置是否重要?

Gia*_*968 2 audio mp3 ffmpeg lame

我在 macOS Sierra (10.12.2) 上使用 FFmpeg 版本 3.2.2 和 LAME 3.99.5,我有这个命令将 FFmpeg 输出(来自 FLAC 文件)传输到 LAME 以编码成 MP3:

ffmpeg -y -v quiet -nostdin -i test.flac -b:a 320k -ac 2 -ar 44100 -f s16le -acodec pcm_s16le - | \
  lame --quiet -r -m s --lowpass 19.7 -V 3 --vbr-new -q 0 -b 96 --scale 0.99 --athaa-sensitivity 1 - test.mp3;
Run Code Online (Sandbox Code Playgroud)

它工作正常,我对结果很满意,但是当我-v quiet从管道的 FFmpeg 部分删除设置时——所以我可以实际看到发生了什么——我注意到输出中的以下内容:

Stream mapping:
  Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
size=   81858kB time=00:07:55.18 bitrate=1411.2kbits/s speed=41.2x  
Run Code Online (Sandbox Code Playgroud)

请注意,比特率1411.2kbits在转换过程中显示,而不是从-b:a 320k正在设置的选项中设置的 320k 比特率。

这是预期的行为吗?由于比特率设置被忽略,因此-b:a 320k -ac 2 -ar 44100在通过 RAW 输出进行管道输出时,整个音频参数 ( )块是多余的-f s16le -acodec pcm_s16le吗?

llo*_*gan 7

这是预期的行为吗?

是的,-b:a输出未压缩格式时会忽略比特率 ( )。产生的比特率为:

sample rate * bits per sample * number of channels = bitrate
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下:

44100 * 16 * 2 = 1411200 bits/s or 1411.2 kilobits/s
Run Code Online (Sandbox Code Playgroud)

-b:a 320k -ac 2 -ar 44100当通过 RAW 管道输出时,整块音频参数 ( ) 是多余的吗

比特率是多余的。如果您想更改通道数或采样率,无论出于何种原因,您都可以保留-ac-ar(但您可能永远不需要)。