使用GStreamer播放mp4文件时同步音频和视频

时间:2014-03-27 11:43:30

标签: audio video 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

2 个答案:

答案 0 :(得分:1)

您是否尝试在不使用TI元素的情况下在常规桌面上播放视频? GStreamer应该处理播放情况(以及许多其他情况)的同步。

如果视频在桌面上完美同步,则您的目标平台特定元素(TIViddec2和tidisplaysink2)存在错误。 qtdemux应该已经将预期的时间戳放在缓冲区上,因此TIViddec2可能没有将这些时间戳复制到其解码缓冲区,或者tidisplaysink2不尊重它们。 (同样可能适用于音频部分)

我首先检查TIViddec2,然后用fakesink替换其后的管道,并使用详细模式gst-launch运行。 fakesink的输出应该显示输出时间戳,检查它们是否一致,你也可以在qtdemux之后立即设置一个fakesink来检查它产生的时间戳,看看解码器是否尊重它。

答案 1 :(得分:0)

我实际上使用了错误的视频帧速率。