2010-09-27 33 views
0

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

回答

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的標準錯誤輸出 '比特率=':8365.8

下面是我的工作方式的鏈接了:

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

我發現是我應該已經使用ffmpeg標準錯誤輸出的平均比特率信息,它看起來是最可靠的!