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

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

我在 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;

它运行良好,我对结果很满意,但是当我-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  

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

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

答案1

这是预期的行为吗?

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

sample rate * bits per sample * number of channels = bitrate

因此,就你的情况而言:

44100 * 16 * 2 = 1411200 bits/s or 1411.2 kilobits/s

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

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

相关内容