“ffprobe”输出中的两个比特率是什么?

“ffprobe”输出中的两个比特率是什么?

我有一个音频文件,如果我运行ffprobe它,我会得到:

  Duration: 00:03:11.17, start: 0.000000, bitrate: 129 kb/s
    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)

注意两个比特率值:我想知道为什么有两个以及它们是什么?

在这里,它们很接近但不完全相同。在其他音频文件中,两者完全相同。在其他情况下,它们有很大不同:

Input #0, ogg, from 'Oxygen-Sys-Warning.ogg':
  Duration: 00:00:02.07, start: 0.000000, bitrate: 159 kb/s
    Stream #0:0: Audio: vorbis, 48000 Hz, stereo, fltp, 192 kb/s
Input #0, ogg, from 'Oxygen-Window-All-Desktops-Not.ogg':
  Duration: 00:00:00.60, start: 0.000000, bitrate: 112 kb/s
    Stream #0:0: Audio: vorbis, 44100 Hz, mono, fltp, 96 kb/s

如果我想在音频文件上运行过滤器,我想输出具有相同采样率和比特率的文件,所以我想知道哪个是正确的比特率以及为什么显示两个。

答案1

Duration:第一个比特率(来自)和第二个比特率(来自)之间的区别Stream:在于,第一个比特率是文件总大小(包括标头和元数据)除以探测的媒体时长。第二个比特率是媒体数据大小除以探测的媒体时长。两者都只是近似值。

如果您想要音频流的实际比特率,则需要解析它:

ffmpeg -i file -c copy -map 0:a -f null -

注意上面最后一行的 旁边的音频流大小audio:和上一行的 旁边的持续时间time=。将第一个除以第二个可得到流的平均比特率。

如果您想要名义比特率,即为编码器设置的目标,那么它就是流的读数。

但是,您不需要只指定一个比特率。有关为视频和音频指定不同的目标比特率,请参阅帖子 如何指定音频和视频比特率。 也可以看看 FFmpeg wiki:限制输出比特率 对于bufsize参数。

相关内容