我遇到的问题是当使用 ffmpeg 使用 libx264 对 YUV 进行编码时,我没有在 -vstats 输出中获得所有帧信息。它提出了 ffmpeg 有多可靠的问题,因此任何基于 ffmpeg 的“编解码器基准”审查都可以信任吗?
我正在分析编解码器以确定它们的性能。我正在使用 ffmpeg 及其 -vstats 选项逐帧查看编码的电影。我使用的过程:
RAW YUV -> 用帧号对每一帧进行条形码编码 -> 条形码 YUV
条形码 YUV -> 编码(例如使用 libx264)-> MKV -> 解码为 YUV
我可以使用每帧中的条形码比较两个输出('Barcoded YUV' & 'Decoded to 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
我认为这也是一个错误,任何足够聪明的人都可能想关注这个跟踪器: http ://roundup.ffmpeg.org/issue2248