10

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

Avidemux 插件可以将音频和视频部分从 avi 文件中分离出来,但是接下来要做什么呢?

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

顺便问一下,哪个视频接收器在效率方面更好?我查阅了插件参考,发现了很多视频接收器:glimagesink、osxvideosink、sdlvideosink、ximagesink、xvimagesink、dfbvideosink、fbdevsink、gconfvideosink autovideosink 是否总是可以正常工作?我的平台是 ubuntu 9.04。

蒂亚~

4

2 回答 2

13

正如尼克哈德建议的那样,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 上)。

于 2009-10-17T19:03:15.773 回答
4

我建议使用 playbin(参考页文档)或解码 bin(参考页文档)。这些大大简化了为不同类型的视频文件创建 gstreamer 管道的过程。对于每一个,您都可以使用GstXOverlay接口使用视频接收器。有关更多详细信息,请参阅在应用程序中嵌入视频窗口。

于 2009-10-16T14:07:52.810 回答