如何用gstreamer显示avi视频?

时间:2009-10-16 08:12:20

标签: video gstreamer

我想编写一个需要播放跟踪结果的对象跟踪程序。由于gstreamer是一个很好的多媒体框架工作,我想在我的演示程序中使用它。但我不知道如何详细实现视频显示。任何人都可以帮忙吗?

Avidemux插件可以将音频和视频部分与avi文件分开,但下一步该怎么做?

如果我打开一个未压缩的avi文件,如果我将avidemux插件的输出板直接链接到视频接收器,它是否有效?

顺便说一下,哪个视频接收器在效率方面更好? 我查了一下插件参考,发现了很多视频接收器:glimagesink,osxvideosink,sdlvideosink,ximagesink,xvimagesink,dfbvideosink,fbdevsink,gconfvideosink autovideosink总是运作良好吗?我的平台是ubuntu 9.04。

TIA〜

2 个答案:

答案 0 :(得分:14)

正如Nick Hadded所说,playbin或decodebin是一个很好的起点。为了进行实验,我建议使用gst-launch,例如:

gst-launch filesrc location=video.avi !
decodebin2 name=dec ! queue ! ffmpegcolorspace ! autovideosink
dec. ! queue ! audioconvert ! audioresample ! autoaudiosink

我正在使用autoaudiosink和autovideosink,因为它们通常有效。当您找到有效的管道时,尝试使用代码构建相同的管道。如果您不需要音频,只需跳过管道的那一部分即可。对于视频显示,最好的选择是xvimagesink(至少在UNIX上)。

答案 1 :(得分:4)

我建议使用播放箱(reference pagedocumentation)或解码箱(reference pagedocumentation)。这极大地简化了为不同类型的视频文件创建gstreamer管道的过程。您可以使用GstXOverlay界面使用视频接收器。有关详细信息,请参阅Embedding the video window in your application