ffmpeg vstats问题,缺少框架和误导性信息!

时间:2010-09-27 12:59:40

标签: encoding ffmpeg benchmarking h.264

我遇到的问题是当使用ffmpeg使用libx264对YUV进行编码时,我没有得到-vstats输出中的所有帧信息。它提出了ffmpeg的可靠性问题,因此基于ffmpeg的任何“编解码器基准”评论都可以被信任吗?

我正在分析编解码器以确定它们的执行方式。我使用ffmpeg及其-vstats选项逐帧查看编码的电影。我使用的过程:

RAW YUV - >用帧号对每帧进行条码编码 - >条形码YUV

条形码YUV - >编码(例如,使用libx264) - > MKV - >解码为YUV

我可以使用每帧中的条形码比较两个输出('条形码YUV'和'解码为YUV')。然后,我可以使用PSNR等将原始帧与编码帧进行精确比较。

使用libx264和libdirac进行编码时,会丢失一些帧信息。其他编解码器,如mpeg2video甚至libvpx,都没有这个问题。

我发现前40到50帧缺少libx264 vstats。我已经证明了丢失的信息实际上是最后40到50帧。

它看起来像ffmpeg根据vstats中的信息计算平均比特率。但是由于缺少帧,平均比特率会低于它应​​该的值。

以下是平均比特率错误示例的链接:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffmpeg_av_bitrate_error.png

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffmpeg_av_bitrate_error.xlsx

以下是PSNR& amp;的链接。 f_size图:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/frame_mismatch.png

以下是输出和输出的链接。命令行选项:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/stderr.txt

我认为这也是一个错误,任何聪明的人都可能想要跟踪这个跟踪器: http://roundup.ffmpeg.org/issue2248

1 个答案:

答案 0 :(得分:0)

我刚发现一些让我脸红的东西!很生气,但没关系:)。

一位ffmpeg用户指出,ffprobe应该输出更多的帧信息。这是他方便提示的链接:

http://forums.creativecow.net/thread/291/71

使用这个我发现了以下内容:

实际平均比特率(ffprobe数据):8355.2776056338
实际平均比特率(ffmpeg vstats数据):8406.23275471698
Ffmpeg -vstats avg_br:7816.3
转载如上:7816.32168421053
Ffmpeg标准错误输出'bitrate =':8365.8

以下是我工作的链接:

http://dl.dropbox.com/u/6743276/ffmpeg_probs/ffprobe_vs_ffmpeg-vstats.xlsx

我发现我应该使用ffmpeg标准错误输出的平均比特率信息,它看起来最可靠!