我遇到的問題是使用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