Gstreamer 1.0:教程中的视频无法在 MacOS 上播放

Max*_*huk 5 c gstreamer

我正在尝试使用 Xcode 7.2 在我的 MacOS 10.11.3 上编译本教程Tutorial_01,但没有获得任何视频:我可以听到音频,但视频窗口似乎在某处丢失了。

我尝试使用命令行 gat-launch-1.0 播放相同的媒体:

gst-launch-1.0 -v playbin uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm
Run Code Online (Sandbox Code Playgroud)

它在 OpenGL Renderer 中打开媒体效果很好。

有任何想法吗?

提前致谢,马克斯

更新:在调试模式下收到此警告:

0:00:00.314802000 [336m64763[00m 0x7f93e4854a30 [32;01mFIXME  [00m [00m        videodecoder gstvideodecoder.c:1057:GstFlowReturn gst_video_decoder_drain_out(GstVideoDecoder *, gboolean):<vp8dec0>[00m Sub-class should implement drain()
Run Code Online (Sandbox Code Playgroud)

Dmi*_*kin 6

看起来您需要在 mac 上运行 Glib 事件循环。

定义变量

GMainLoop *main_loop;
Run Code Online (Sandbox Code Playgroud)

然后在管道创建后运行循环:

main_loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (main_loop);
Run Code Online (Sandbox Code Playgroud)

可能您需要回调来控制循环,以便您可以使用 g_timeout_add.

希望能帮助到你

更新:

GStreamer Bus - 这个链接也应该有帮助

  • 我在 GStreamer 1.15.1 和 Xcode 10.1 上遇到了同样的问题。我可以从命令行调用 playbin 正常播放,但教程 1 产生声音而没有视频。添加上面的主循环代码对我有用,可以在通过 Xcode 运行教程 1 时显示视频。对 g_main_loop_run() 的调用需要在管道状态设置为播放后立即调用 (3认同)

Flo*_*och 1

我认为playbin2它不再是一个有效的源插件了。它的功能已经迁移到playbin(我认为)。

但无论如何 - 如果某些功能不起作用,请检查错误代码。它们通常会给出一个易于阅读的错误来说明错误所在。

gstreamer.com 不是 gstreamer 项目的官方资源,专注于过时的 0.10 发行分支。我建议在http://gstreamer.freedesktop.org上查找示例。甚至 gstreamer.com 的起始页也建议这样做。