我有一个音频文件,如果我运行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
参数。