如何在 Raspberry Pi3 上的 Qt5 上使用 qt-gstreamer 和 qtquick2videosink

Posted

技术标签:

【中文标题】如何在 Raspberry Pi3 上的 Qt5 上使用 qt-gstreamer 和 qtquick2videosink【英文标题】:How to use qt-gstreamer with qtquick2videosink on Qt5 on Raspberry Pi3 【发布时间】:2020-02-20 02:12:31 【问题描述】:

我从 GitHub(版本 1.2.0)上的源代码构建了 qt-gstreamer。然后我尝试在 Raspberry Pi3 上的 qt5 上运行 qmlplayer2 应用程序(由 qt-gstreamer 构建并使用 qtquick2videosink),但在运行时出现以下错误:

(gst-plugin-scanner:3749): GStreamer-WARNING **: 加载插件失败 '/usr/lib/gstreamer-0.10/libgstqt5videosink.so': /usr/lib/gstreamer-0.10/libgstqt5videosink.so:未定义符号: _Z33gst_qt_quick2_video_sink_get_typev 未能创建 qtquick2videosink。确保安装正确

(qmlplayer2:8517): GStreamer-CRITICAL **: gst_bin_add: 断言 “GST_IS_ELEMENT(元素)”失败

(qmlplayer2:8517): GStreamer-CRITICAL **: gst_element_link_pads_filtered:断言“GST_IS_ELEMENT(dest)” 失败

【问题讨论】:

【参考方案1】:

查看qt-gstreamer的源码,我发现gst_qt_quick2_video_sink_get_type()函数是在gstqtquick2videosink.cpp中实现的,但是由于cmake中缺少与OpenGL相关的配置,这个文件没有被编译。

我将 cmake 配置如下:

然后重建并将新文件 libgstqt5videosink.so 部署到目标设备上的 /usr/lib/gstreamer-0.10/libgstqt5videosink.so。之后 qmlplayer2 应用程序工作正常。

【讨论】:

"配置如下"... 抱歉,但是如何配置?你忘了写你的配置吗 感谢您的快速回复,但我仍然遇到困难。我不知道如何在 cmake 中更新这些变量。我是一个 cmake 新手。我使用 buildroot,在配置阶段后我可以在 CMakeCache.txt 中看到上述变量,但我不认为这是更新它们的正确方法。请建议最好的文件来更新路径。谢谢 @DMcAttach 你应该使用 Cmake GUI 而不是命令行来轻松配置这些变量 感谢更新和修复。我修补了 CMakeLists.txt 以添加我的路径。

以上是关于如何在 Raspberry Pi3 上的 Qt5 上使用 qt-gstreamer 和 qtquick2videosink的主要内容,如果未能解决你的问题,请参考以下文章

基于树莓派(Raspberry Pi3)平台通过微信(WeChat模块)进行交互的智能家居实现

在 Raspberry 上编译 Qt5 应用程序

能不能在 raspberry pi 上实现这样的网络设置

如何将运行时框架“Microsoft.WindowsDesktop.App”,版本 6.0.0 下载到 Raspberry PI 3b+

如何为 Raspberry pi 3 编译 ARMv8 代码

无法从 qt5.6 源代码为 raspberry pi 2 构建 qtwebengine