将 Gstreamer 与 Qt 连接以便在 Qt Widget 中播放 gstreamer 视频

2024-01-04

我尝试使用声子播放视频但无法成功。 Off-late通过Qt论坛了解到,即使是最新版本的Qt也不支持phonon。就在那时我开始使用 Gstreamer。关于如何将 Gstreamer 窗口与 Qt 小部件连接有什么建议吗?我的目标是在 Qt 小部件上使用 Gstreamer 播放视频。那么如何链接 Gstreamer 窗口和 Qt 小部件呢?

我成功获得了Id小部件的通过winid()。 此外,在 Gregory Pakosz 的帮助下,我在我的应用程序中添加了以下两行代码 -

QApplication::syncX();
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(sink), widget->winId());

但是,我无法将 Qt 小部件与 gstreamer 视频窗口链接。

这就是我的示例代码的样子:-

int main(int argc, char *argv[])
{
printf("winid=%d\n", w.winId());
    gst_init (NULL,NULL);
    /* create a new bin to hold the elements */
    bin = gst_pipeline_new ("pipeline");

      /* create a disk reader */
  filesrc = gst_element_factory_make ("filesrc", "disk_source");
  g_assert (filesrc);



  g_object_set (G_OBJECT (filesrc), "location", "PATH_TO_THE_EXECUTABLE", NULL);

  demux = gst_element_factory_make ("mpegtsdemux", "demuxer");
  if (!demux) {
    g_print ("could not find plugin \"mpegtsmux\"");
    return -1;
  }

  vdecoder = gst_element_factory_make ("mpeg2dec", "decode");
  if (!vdecoder) {
    g_print ("could not find plugin \"mpeg2dec\"");
    return -1;
  }

  videosink = gst_element_factory_make ("xvimagesink", "play_video");
  g_assert (videosink);


  /* add objects to the main pipeline */

  gst_bin_add_many (GST_BIN (bin), filesrc, demux, vdecoder, videosink, NULL);


  /* link the elements */
  gst_element_link_many (filesrc, demux, vdecoder, videosink, NULL);

    gst_element_set_state(videosink, GST_STATE_READY);

    QApplication::syncX();
    gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(videosink), w.winId());



  /* start playing */
  gst_element_set_state (bin, GST_STATE_PLAYING);

}

您能否更详细地解释一下 gst_x_overlay_set_xwindow_id() 在我的上下文中的用法?

我可以获得有关如何在 Qt 下集成 gstreamer 的任何提示吗? 请帮我解决这个问题。


我刚刚使用 python 做了同样的事情。我要做的就是连接到总线上的“sync-message::element”,并侦听在视频接收器已设置。它会向您发送该消息内的接收器,这就是您向其传递窗口 ID 的位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Gstreamer 与 Qt 连接以便在 Qt Widget 中播放 gstreamer 视频 的相关文章

  • 在 Qt 5 中嵌入 Python

    我想将 Python 解释器嵌入到 Qt 5 应用程序中 我在 Qt 5 中有一个工作应用程序 但是当我把 include
  • Qt5和QML:如何使用WebEngine Quick Nano浏览器自动输入用户名和密码

    我正在使用编写一个小应用程序Qt and QML使用 Qt 文档中的示例WebEngine Quick Nano 浏览器 https doc snapshots qt io qt5 5 9 qtwebengine webengine qui
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 如何使用 Qt DOM 通过此语法获取 xml 属性

    我正在使用 Qt DOM XML 解析器 并且遇到了如下属性定义的问题
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • QComboBox 下拉项边距

    我想设计我的风格QComboBox为下拉项目留出边距 现在是这样的 我想要这样的东西 我尝试过 QComboBox QAbstractItemView item margin 3px 但它不起作用 你能帮我解决这个问题吗 您想在项目之间设置
  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • new 运算符(以及 malloc)无法分配约 450 MB 的内存 [重复]

    这个问题在这里已经有答案了 我正在开发一个程序 该程序在内存中存储大约 2 2 亿个短值的数组 该数据块的分配方式如下 short arrayName new short SIZE OF ARRAY 然后将文件的内容读入内存 在团队中的另一
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • QT:删除QGridLayout中QLabel之间的空格

    我将一些具有不同颜色的 QLabels 添加到 QGridLayout 作为 QWidget 的布局 现在我在每个 Qlabel 与下一个 Qlabel 之间有一个间距 我想将其删除 我尝试将标签的边距设置为 0 将 GridLayout
  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • QML 中可重用的字体属性[重复]

    这个问题在这里已经有答案了 在 QML 中 我希望能够定义一组字体属性以进行简单的语义重用 例如 代替 Text text This is a header font family Encode Sans weight Font Black
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 即使我在单独的线程中运行,QT GUI 也会冻结

    我有一个小型聊天应用程序 其中使用 SQLite 数据库来存储所有对话 我注意到该应用程序随机冻结 然后我必须最小化和最大化它才能使其再次工作 我认为问题可能是 SQLite 选择 插入导致 gui 冻结 我决定尝试将所有 SQLite 方
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • Q风格所有权

    在 Qt 应用程序中使用样式时 我遇到了一个有趣的问题QStyle所有权 QStyle继承自QObject 通常接受QObject parent作为构造函数参数来管理其子级的生命周期 但QStyle的构造函数没有此构造函数参数 第一个问题
  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以

随机推荐

  • runOnUIThread 问题

    我正在使用列表视图创建一个下载管理器 它将通过进度条显示当前下载的内容 我可以知道如何更新进度条吗 例如 我有3节课 main class 是一个列表视图 mAdapter class 扩展了 ArrayAdapter mThread cl
  • 移动目标元素时不会触发单击处理程序

    考虑以下演示https stackblitz com edit angular pur1dt https stackblitz com edit angular pur1dt 我有反应式表单控件 带有同步验证器 当字段无效时 错误消息显示在
  • “pagerror.gif”的意义?

    我的网站上有一个名为 pagerror gif 的不存在文件受到奇怪的点击 从一些基本的谷歌搜索来看 它似乎是 Internet Explorer 在某些情况下查找的文件 任何人都可以验证这一点 也许还可以提供一些有关 IE 何时查找该文件
  • 分页编译问题:不确定如何将游标转换为该方法的返回类型

    我一直在尝试在 Android 架构组件中使用 google 提供的 Room 来实现分页库 但是它在我的中显示编译时错误UserDao Class 这是错误 Error 22 42 error Not sure how to conver
  • 多态成员变量指针的 std::map

    我正在努力实现与字符串键关联的成员变量指针的映射 所有变量的范围都来自基类 BaseA 当从映射中访问变量时 只需要使用基类方法 示例中的 getDesc 因此不需要检索原始类型 该代码在GNU g 6 2 1下编译并运行 但根据我读到的内
  • 从 PHP 调用 node.js 脚本不会返回任何内容

    我想做的事情在理论上很简单 但我无法完全让它发挥作用 我编写了一个简单的 node js 脚本 它使用request包异步获取一些数据 解析它 并将其吐出为 html 我想将此脚本集成到我客户位于共享主机上的基于 php 和 apache
  • 为什么在这种情况下会生成classname$1.class? [复制]

    这个问题在这里已经有答案了 我编写了以下代码来实现单例模式 public final class Test static final class TestHolder private static final Test INSTANCE n
  • SQL 检查列中的所有值

    我在 Oracle DB 中有下表 ID VALUE 1 1 1 2 1 3 2 1 2 2 3 1 3 2 3 3 4 1 如何选择具有全部 3 个值 1 2 3 的 ID 最简单的选择通常是这样的 SQL gt ed Wrote fil
  • 如何将数组写入nodejs中的文件并保留方括号?

    我想将矩阵写入 js 文件 当我使用 console log matrix 时 一切都很好 但是当我将其写入文件时 结果会有所不同 var fs require fs var matrix new Array 10 for var i 0
  • 在 Angularjs 中对基于 Promise 的代码进行单元测试

    我在尝试在 Angularjs 中测试基于 Promise 的代码时遇到了困难 我的控制器中有以下代码 scope markAsDone function taskId tasksService removeAndGetNext taskI
  • 重命名列正则表达式,如果不匹配则保留名称

    data First Column 1 2 3 Second Column 1 2 3 First Mid LAST Ending 1 2 3 First1 Mid1 LAST1 Ending 1 2 3 df pd DataFrame d
  • Doctrine 部分查询返回完整对象

    我正在尝试优化查询 因为我需要一个简单的列表作为附属于多个实体的实体 所以我创建了这个查询 你应该给我返回 id 和名称 public function findAllOrderByName qb this gt createQueryBu
  • 更改主题,例如 Fabric Web(默认/深色)

    在fabric的文档页面中 现在每个示例组件都有更改主题功能 IE example https developer microsoft com en us fabric controls web button 在此输入图像描述 https
  • Linux内核中的内存屏障是如何使用的

    内核源码Documentation memory barriers txt中有一个说明 如下所示 CPU 1 CPU 2 B 7 X 9 Y 8 C Y STORE A 1 STORE B 2
  • Microsoft Bot Framework DirectLine 无法访问对话

    我正在尝试使用 Microsoft Bot Framework DirectLine API 读取消息并将其添加到其他用户和我的机器人之间的现有对话中 根据我所读到的内容 我相信使用主秘密时这应该是可能的 但它对我不起作用 我正在使用 We
  • 即使有事务,SQLite 插入也会变慢

    即使对于事务 我也遇到了 sqlite 插入性能的问题 我的 Android 应用程序从 Web 服务接收大约 23 000 行 我必须将它们插入到单个表中 Web 服务已分区 以便我在对 WS 的每个请求中收到大约 2000 行 并将这
  • 完整句子的反义词

    我想以相反的格式打印字符串 Input My name is Archit Patel Output Patel Archit is name My 我已经绑定了以下内容 但它显示为letaP tihcrA si eman ym publi
  • 将所有匹配项收集到一个单元格中的电子表格公式

    我有一个电子表格 如下所示 A B C D FirstName SurnameName Address UniqueFamilyId Abe Black 1 Elm Ave Black 1 Elm Ave Joe Doe 7 Park Ln
  • iOS/Xcode 为项目中的框架启用按需资源

    有没有人建立过一个项目Enable On Demand Resources set to YES用于与该项目相关的框架 我正在开发的应用程序中的大多数目录资源都被保留并带入框架中的项目中 并且出现构建错误Target
  • 将 Gstreamer 与 Qt 连接以便在 Qt Widget 中播放 gstreamer 视频

    我尝试使用声子播放视频但无法成功 Off late通过Qt论坛了解到 即使是最新版本的Qt也不支持phonon 就在那时我开始使用 Gstreamer 关于如何将 Gstreamer 窗口与 Qt 小部件连接有什么建议吗 我的目标是在 Qt