Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gstreamer视频覆盖在QWidget上无效的强制转换,Windows 10_Windows_Qt_Gstreamer - Fatal编程技术网

Gstreamer视频覆盖在QWidget上无效的强制转换,Windows 10

Gstreamer视频覆盖在QWidget上无效的强制转换,Windows 10,windows,qt,gstreamer,Windows,Qt,Gstreamer,问题是我无法在QWidget中流式传输相机或任何视频。我可以在没有Qt的情况下完成,但我需要在QWidget中完成。语法很好。QWidget出现了,但里面什么都没有。我使用GstElement*作为源和汇 data.source=gst\u元素\u工厂制造商(“autovideosrc”、“source”) data.sink=gst元素工厂制造(“自动视频接收器”、“接收器”) 在命令行中,当我编写 “gst-launch-1.0 autovideosrc!autovideosink” 但是,

问题是我无法在QWidget中流式传输相机或任何视频。我可以在没有Qt的情况下完成,但我需要在QWidget中完成。语法很好。QWidget出现了,但里面什么都没有。我使用GstElement*作为源和汇

data.source=gst\u元素\u工厂制造商(“autovideosrc”、“source”)
data.sink=gst元素工厂制造(“自动视频接收器”、“接收器”)

在命令行中,当我编写
“gst-launch-1.0 autovideosrc!autovideosink”
但是,它对代码不起作用。

QApplication::sync(); gst\u video\u overlay\u set\u window\u句柄(gst\u video\u overlay(gst\u元素(data.sink)),guintpttr(ui.widget->winId())


它给出了这个错误:

GLib GObject警告**:从“GstAutoVideoSink”到“GstVideoOverlay”的转换无效

**(QtGuiApplication2.exe:6188):关键**:gst\U视频覆盖层\U设置窗口\U句柄:断言“gst\U是视频覆盖层(覆盖层)”失败

>


我怎样才能解决这个问题?感谢您的关注。

autovideosink
不会暴露
GstVideoOverlay
界面。因为它不是一个真正的渲染器,只是一个自动插入辅助程序。启动管道后,它会决定插入实际的渲染器

您应该添加一个总线同步处理程序来检查prepare overlay消息,然后执行视频覆盖调用。文档通过示例展示了基本思想:


autovideosink
不公开
GstVideoOverlay
接口。因为它不是一个真正的渲染器,只是一个自动插入辅助程序。启动管道后,它会决定插入实际的渲染器

您应该添加一个总线同步处理程序来检查prepare overlay消息,然后执行视频覆盖调用。文档通过示例展示了基本思想:


当我在web中深入搜索时,autovideosink提供了我没有指定的自动窗口。有些人建议使用appsink和glimagesink。我使用了它们,但“appsink”给出了相同的错误,无效的强制转换,并且没有窗口。“glimagesink”没有给出任何错误,但也没有显示任何内容。顺便说一下,你提供的链接,我已经查过了。它也不起作用。appsink也不提供视频覆盖界面。所以这个错误是意料之中的。可能有同样问题的人,尝试使用glimagesink,因为它暴露了GstVideoOverlay。正如Florian Zwoch所说,不暴露GstVideoOverlay的水槽不会工作。尝试使用gst-inspect-1.0 | grep“水槽”,查看各种水槽。在实现了glimagesink之后,您无法显示QWidget,因为线程进入了它。你们应该为你们的程序建立一个线程机制,以便显示QWidget和做其他事情。当我在web中深入搜索时,autovideosink提供了我没有指定的自动窗口。有些人建议使用appsink和glimagesink。我使用了它们,但“appsink”给出了相同的错误,无效的强制转换,并且没有窗口。“glimagesink”没有给出任何错误,但也没有显示任何内容。顺便说一下,你提供的链接,我已经查过了。它也不起作用。appsink也不提供视频覆盖界面。所以这个错误是意料之中的。可能有同样问题的人,尝试使用glimagesink,因为它暴露了GstVideoOverlay。正如Florian Zwoch所说,不暴露GstVideoOverlay的水槽不会工作。尝试使用gst-inspect-1.0 | grep“水槽”,查看各种水槽。在实现了glimagesink之后,您无法显示QWidget,因为线程进入了它。您应该为您的程序创建一个线程机制,以便显示QWidget并执行其他操作。