問題出在於你開啟的檔案是 XviD 的 AVI,這個 AVI 有使用 B-frame,但是壓縮的時候沒有使用 Packed Bitstream 的功能,造成使用 VfW Codec 去讀取的時候,開頭會有一個 B-frame 的解碼延遲。
把開頭多餘的這一張 frame 用 trim 這個指令刪除即可。
AVISource("xxx.avi").trim(1,0)
trim 這個指令會同時剪除相同的聲音長度,所以你的音軌部分開頭也會剪掉一小段,無法修正影音不同步的問題,所以音軌的部分你可以另外 demux 出來再合併回去。
或者是使用 DirectShowSource("xxx.avi,fps=xxx,seek=false,audio=false,...)
來開啟檔案,就不會出現這個警告訊息,不過開頭會重複一張,有一個 frame 的影音不同步。
但是播放的時候都在看了,這個一個 frame 的不同步,我想是沒有多少人能夠注意到的
建議使用 XviD 壓縮的人,如果有用 B-frame,輸出的檔案格式又是 AVI 的話,最好開啟 Packed Bitstream 這個功能,以免後續處理的麻煩。