我想编写一个需要播放跟踪结果的对象跟踪程序。由于gstreamer是一个很好的多媒体框架工作,我想在我的演示程序中使用它。但我不知道如何详细实现视频显示。任何人都可以帮忙吗?
Avidemux插件可以将音频和视频部分与avi文件分开,但下一步该怎么做?
如果我打开一个未压缩的avi文件,如果我将avidemux插件的输出板直接链接到视频接收器,它是否有效?
顺便说一下,哪个视频接收器在效率方面更好? 我查了一下插件参考,发现了很多视频接收器:glimagesink,osxvideosink,sdlvideosink,ximagesink,xvimagesink,dfbvideosink,fbdevsink,gconfvideosink autovideosink总是运作良好吗?我的平台是ubuntu 9.04。
TIA〜
答案 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 page,documentation)或解码箱(reference page,documentation)。这极大地简化了为不同类型的视频文件创建gstreamer管道的过程。您可以使用GstXOverlay界面使用视频接收器。有关详细信息,请参阅Embedding the video window in your application。