我遇到的问题是当使用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
答案 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标准错误输出的平均比特率信息,它看起来最可靠!