2014-03-27 265 views
0

當我播放mp4文件時,需要同步視頻和音頻。我怎樣才能做到這一點?使用GStreamer播放mp4文件時同步音頻和視頻

這裏是我的管道:

gst-launch-0.10 filesrc location=./big_buck_bunny.mp4 ! \ 
    qtdemux name=demux demux.video_00 ! queue ! TIViddec2 engineName=codecServer codecName=h264dec ! ffmpegcolorspace !tidisplaysink2 video-standard=pal display-output=composite \ 
    demux.audio_00 ! queue max-size-buffers=500 max-size-time=0 max-size-bytes=0 ! TIAuddec1 ! audioconvert ! audioresample ! autoaudiosink 

回答

0

實際上我使用了錯誤的視頻幀率。

1

您是否嘗試過扮演一個普通的桌面上的視頻,而無需使用TI的元素呢? GStreamer應處理播放情況(和其他許多情況)的同步。

如果視頻在桌面上完美同步,那麼您的目標平臺特定元素(TIViddec2和tidisplaysink2)存在錯誤。 qtdemux應該已經將預期的時間戳放在緩衝區中,因此TIViddec2可能不會將這些時間戳複製到其解碼的緩衝區,或者tidisplaysink2不會尊重它們。 (同樣可能適用於音頻部分)

我首先檢查TIViddec2,然後用fakesink替換其餘管道,並使用詳細模式gst-launch運行。 fakesink的輸出應該會顯示輸出時間戳,檢查它們是否一致,你也可以在qtdemux後面加一個fakesink來檢查它產生的時間戳,看看解碼器是否遵守這個時間戳。

+0

謝謝,我會嘗試並回復。 –

+0

好吧,一切工作正常我的電腦與此管道。 TIViddec2時間戳看起來也一致。但是我怎樣才能將它們與來自qtdemux的相比?創建另一個隊列? –

相關問題