ffprobe与MediaInfo.DLL输出信息差异的技术问询
我写了一些逻辑来对比ffprobe和MediaInfo.DLL的输出信息,以下是我的观察和疑问:
A) 数值精度差异与准确性判断
大多数差异来自各类数值(比特率、时长、帧率)的末位小数微小变化,但我无法判断哪一个的结果更准确。想请教下:ffprobe和MediaInfo.DLL之间的这类细微差异是否有实际意义?有没有办法评估哪一方的输出更准确?
B) 比特深度(Bits Per Sample)的有效性问题
针对某一个WMV文件,MediaInfo.DLL报告的Bits Per Sample为16。我理解BPS和比特深度是同一概念的不同叫法,但ffprobe无法识别出该文件的比特深度。我倾向于ffprobe的结果是正确的——因为音频编码是wmav2,这种低质量的有损压缩理论上会让比特深度失去意义。所以我怀疑MediaInfo.DLL是不是只是识别到WMA格式就默认假设比特深度为16?
另外还有一个AMR文件也有类似情况:MediaInfo.DLL报告比特深度为14,而ffprobe报告的比特率是9200,MediaInfo.DLL则报告为0。有没有可靠的方法可以判断MediaInfo.DLL给出的BPS是否真实有效且正确?
C) WEBM文件比特率的矛盾输出
针对某一个WEBM文件,ffprobe显示视频比特率和音频比特率均为0,这和文件属性窗口“详细信息”标签页里显示的视频数据速率0kbps一致。但MediaInfo.DLL报告视频比特率为439316 bps,音频比特率为64000 bps,其中音频比特率和文件属性里的数值匹配。
ffprobe只报告了一个总比特率533294(未说明是音频、视频、合并还是其他),而MediaInfo.DLL的“更多信息”视图里将这个数值标注为整体比特率,它和音视频比特率的总和大致接近,所以这些速率可能是WEBM这种有损格式的“目标比特率”?
我自己计算了一下:视频流大小除以时长(秒)得到54914.439...,音频流大小除以时长得到刚好8000。显然MediaInfo并不是通过这种简单计算来得到平均音视频比特率的。想请教这背后可能是什么原因?哪一方的结果更符合实际情况?
我的样本媒体文件可在此获取
备注:内容来源于stack exchange,提问作者Tom Bogle




