我遇到的问题是使用ffmpeg编码使用libx264的YUV我没有在-vstats输出中获取所有帧信息。它提出了ffmpeg的可靠性问题,因此可以信任基于ffmpeg的任何'编解码器基准'评论?ffmpeg vstats问题,遗漏框架和误导性信息!
我正在分析编解码器以确定它们的性能。我使用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链路& f_size图表:
http://dl.dropbox.com/u/6743276/ffmpeg_probs/frame_mismatch.png
下面是链接到输出&命令行选项:
http://dl.dropbox.com/u/6743276/ffmpeg_probs/stderr.txt
我想这也是一个bug,任何人都足够聪明去解决问题可能要遵循这个跟踪器: http://roundup.ffmpeg.org/issue2248