如何计算FFmpeg输出文件的大小?

8
我正在使用ffmpeg将家庭视频转换为DVD格式,并希望在进行转换之前计算输出文件的大小。我的输入文件比特率为7700 kbps,长度为114秒,音频比特率为256 kbit(每秒?)输入文件大小为77MB。为了获取这些信息,我运行了以下命令:mplayer -vo null -ao null -frames 0 -identify input.MOD理论上,输入文件应该有(大约)以下文件大小:((7700 / 8) * 114) / 1024,即(7700/8)为千字节/秒,乘以114秒,然后转换为兆字节。这给了我107MB,远远超过我的77MB。因此,我对他的公式持怀疑态度。话虽如此,在转换视频后:
ffmpeg -i input.MOD -y -target ntsc-dvd -sameq -aspect 4:3 output.mpg

数字看起来更有意义。比特率为9000 kbps,应用上述公式,我得到了125MB,而我的实际输出文件大小为126MB。
因此,有两个问题:
1.如何将音频比特率纳入计算?是加法(视频文件大小+音频文件大小)吗?
2.DVD是否总是具有9000千比特/秒的速率?这是DVD的定义吗?还是这取决于输入视频的视频质量?"-target ntsc-dvd"对我的视频有什么保证?
3.为什么我的输入文件与计算结果不匹配,但输出文件却匹配?是否存在其他变量我没有考虑?
正确计算文件大小的方法是什么?
1个回答

3
你需要记住的是,有几个不同的比特率测量值需要考虑:
- 最大比特率 - 视频中最活跃碎片的比特率 - 平均(目标)比特率 - 使用精确公式计算的比特率 - 码率控制(编码器对视频复杂度变化反应的速度)
有损视频编码通过消除人眼难以看到的特征来工作。这意味着,慢动作、讲话等场景可以被压缩得比旋转全屏缩放/全景更小。
为什么它很重要?标准确实为什么需要指定“最大”比特率 - 这是播放器需要以符合标准的速度读取和解码视频的原因。DVD 的最大比特率约为 9000kbps。
最后,由于它是有损压缩,可以指定平均比特率。如果您需要将内容适配到有限的空间或带宽中(可能允许对更显著的碎片进行缓冲),则会使用此选项。
例如,您可以拥有最大比特率为7000kbps,平均比特率为5500kbps的视频。最后,码率控制是用于决定编码器应该分配给不同碎片多少“空间”的算法。如果您进行多通道编码,可以重用来自前面通道的信息 - 从而提高质量和比特率分布。

这是否意味着我可以将最大比特率(在此情况下,对于DVD为9000kbps)用作编码后文件大小的上限? - poundifdef
1
是的。这也意味着如果您需要更紧密地压缩它,可以指定更严格的平均比特率。标准DVD可以从1150kbps到9000kbps不等,这意味着在单面单层光盘上可以容纳1小时到8小时的内容。 - qdot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接