2014-03-27 272 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的相比?创建另一个队列? –