Windows 10上的QWidget上的Gstreamer视频覆盖无效投放

时间:2018-06-19 12:32:58

标签: windows qt gstreamer

问题是我无法在QWidget中流式传输摄像机或任何视频。我可以不用Qt来做,但是我需要在QWidget中做。语法很好。 QWidget出现,但其中没有任何内容。我将GstElement *用于源和接收器。

data.source = gst_element_factory_make(“ autovideosrc”,“源”);
data.sink = gst_element_factory_make(“ autovideosink”,“ sink”);

在命令行中,当我编写
时,它工作正常 “ gst-launch-1.0 autovideosrc!autovideosink”
但是,它不适用于代码。

QApplication :: sync(); gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(GST_ELEMENT(data.sink)),guintptr(ui.widget-> winId()));


出现此错误:

GLib-GObject-WARNING **:从“ GstAutoVideoSink”强制转换为“ GstVideoOverlay”

**(QtGuiApplication2.exe:6188):严重**:gst_video_overlay_set_window_handle:断言“ GST_IS_VIDEO_OVERLAY(覆盖)”失败

<<<这个问题几乎无处不在,但是在stackoverflow,qtcentre和gstreamer开发人员论坛中仍然没有明确的解决方案。我知道有人已经解决了这个问题,但请回复论坛... >>>

我怎么解决这个问题?谢谢您的关注。

1 个答案:

答案 0 :(得分:1)

autovideosink不公开GstVideoOverlay界面。因为它不是真正的渲染器,而仅仅是一个自动插入帮助器。在启动管道之后的某个时候,它决定插入实际的渲染器。

您应该添加一个总线同步处理程序,以检查准备叠加消息,然后进行视频叠加调用。该文档通过示例显示了基本思想:

https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/GstVideoOverlay.html