问题标签 [gstreamer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
10108 浏览

c++ - CMake链接问题

我正在尝试使用 CMake 编译使用 C 库 GStreamer 的 C++ 应用程序。

我的 main.cpp 文件如下所示:

这有效:

如何使用 CMake 制作它?我的 CMakeLists.txt 文件如下所示:

输出给出链接器错误:

0 投票
1 回答
926 浏览

python - pygst - glimagesink 回调

我正在尝试将'glimagesink'元素与python一起使用。元素(内部是 GObject)具有client-draw-callback应该(至少在 C++ 中)包含函数 ( bool func(uint t, uint w, uint h)) 指针的属性。我已经尝试过element.set_property('client-draw-callback', myfunc),并使用 ctypes 创建函数指针,但每次都说,TypeError: could not convert argument to correct param type

我可以找到任何关于在 python 中使用 glimagesink 或 glfilterapp 的文档):

工作 C++ 代码:

0 投票
2 回答
16036 浏览

c++ - 使用 Qt 播放 RTP 视频流?

我想创建一个 Qt 小部件,它可以播放传入的 RTP 流,其中视频编码为 H264 并且不包含音频。

我的基本实施计划是这样的:

  • 创建一个 Phonon MediaSource对象(流类型)。
  • 将其与提供数据的QIODevice子类连接
  • 使用以下任一方法获取视频数据:
    • JRTPLIB客户端库
    • GStreamer gstrtpbin插件。这个插件负责卸载包和解码视频。也许这会提高 Phonon 识别数据的机会。

我的环境:

  • Ubuntu 9.10
  • Qt 4.6

我的问题:

  • 我的方法好吗?也许我忽略了一个更明显或更简单的解决方案?
  • 我目前遇到了这个问题:尝试播放视频流时,MediaObject 的状态变为 ErrorState,errorType 为 FatalError。谁能告诉我我做错了什么?

编辑我发现的一个解决方案是将 libVLC 与 Qt 结合使用,这是我在这个线程
中了解到的。这是感兴趣的代码示例。我仍在寻找基于声子的解决方案。 理想情况下,我只需要提供一个 SDP 文件即可完成工作。

0 投票
3 回答
16692 浏览

c++ - 如何在 Qt 中实现基于 GStreamer 的视频小部件?

我想使用 Qt 创建一个可以播放本地视频文件的简单 GUI 应用程序。我可以使用 Phonon 来完成所有幕后工作,但我需要有更多的控制权。我已经使用 decodebin 和 autovideosink 元素成功地实现了 GStreamer 管道。现在我想使用 Qt 小部件将输出引导到。

有没有人成功地做到这一点?(我想是的,因为有基于 GStreamer 的基于 Qt 的视频播放器。)有人能指出我正确的方向吗?

注意:这个问题类似于我之前发布的关于如何将 Qt 与传入的 RTP 流连接的问题。这似乎很有挑战性。我想这个问题会更容易回答。

更新 1

Patrice 对使用 libVLC 的建议已经非常有帮助了。这是在 VLC 网站上找到的代码的更简洁的版本: Sample for Qt + libVLC。但是,我最初的问题仍然存在:如何将 GStreamer 连接到 Qt 小部件?

更新 2

经过一些实验,我最终得到了这个工作示例。它依赖于我自己的小 GstSupport 库中的GstWidget.hGstWidget.cpp 。但是,请注意,目前仅在 Mac 版本的 Qt 上进行了测试。

0 投票
3 回答
51355 浏览

video-streaming - 使用 GStreamer 播放传入的 RTP 流

我正在开发一个 GStreamer 应用程序,并且在为传入的 RTP 流实现播放器方面遇到了一些困难。我正在尝试围绕 gstrtpbin 元素构建管道。我正在尝试使用 gst-launch 构造对管道进行建模:

当我启动脚本 GStreamer 报告这些错误:

我应该提到它适用于 playbin 和 SDP 文件。例如这个文件:

可以用来播放这样的流:

为了完整性:我正在使用 VLC 发送数据。这是命令:

有人能帮我理解为什么 gst-launch 脚本会失败吗?错误“原因未链接”让我认为 gstrtpbin 和 rtph264depay 元素之间的链接已损坏。但我不知道如何解决它。

编辑
按照 RAOF 的建议,我修复了命令中的一些错误。但是我使用的是 ffdec_h264 和 autovideosink,因为在我的 Windows 系统上我没有安装 fluh264dec 和 xvimage sink 插件:

这会导致新的错误:

我仍在试图弄清楚如何解决这个问题。如果您可以提供帮助,请随时提供帮助。

Edit2
我使用 SDP 解决方案再次测试,观察到“不存在的 PPS”错误也会出现,但视频确实可以播放。另一方面,致命的“内部数据流错误”仅在使用自定义管道解决方案时显示。我怀疑“不存在的 PPS”错误是由 x264 编码器引起的。“内部数据流错误”一定是由我的管道中的错误引起的,或者可能是某些 Windows 插件中的错误。我会做一些进一步的研究...

0 投票
4 回答
7791 浏览

c++ - 用于 Windows 开发的 GStreamer 或 DirectShow?

我正在为当地一所大学实施一个讲座捕捉项目。多个视频流将到达一台 PC:演示者的桌面幻灯片、演示者本人的摄像机图像以及可选的数字白板捕获。这些传入的流将由桌面应用程序管理,该应用程序显示、转码/混合并最终将它们保存到磁盘。将有一些配置选项,因为材料可以通过多种方式分发:作为 DVD 上的 Flash 应用程序、作为在线 Flash 应用程序或作为 Windows Media Player 的视频点播流。

此应用程序应该可以在 Windows 上运行。可选地,它可以支持其他平台,但它似乎不是高优先级。

GStreamer 和 DirectShow 似乎都能够提供底层技术。我对 Linux 上的 GStreamer 有一点经验,我喜欢它的设计,所以我倾向于在这个项目中使用它。但是,我不知道它在 Windows 上的支持情况如何。我找不到任何关于如何在 Windows 上构建 GStreamer 的最新文档。所以我担心我会在这个过程的某个地方卡住。

DirectShow 似乎是一个更安全的选择,因为它使用更广泛,并且在 Internet 上有更多可用的文档。

这里有人有在 Windows 上使用 GStreamer 的经验吗?它运作良好吗?是否有一些我应该注意的问题?

编辑
我发现了GStreamer OSSBuilds网站,并能够用它快速实现一个简单的视频播放器(基于“playbin”元素)。所以我想我会在 GStreamer 的道路上走得更远一点。

0 投票
1 回答
1271 浏览

python - 如何使用 gst-python 生成音频流?

我希望在 gstreamer 中生成一个流,如果可能的话,我更愿意从 python 中进行。这指向使用 gst-python,但我没有看到明确的方法。看起来创建一个新流需要制作一个 gstreamer 插件,而 gst-python 似乎无法做到。

澄清一下,我希望能够生成传递给声卡的实际值,例如,使我能够制作正弦曲线音调。我不想使用内置的 python OSS 支持,因为它有点过时了,并且会锁定 /dev/dsp。

有没有人有什么可以尝试的建议?或者甚至可以做到这一点的另一个(现代)音响系统?

0 投票
1 回答
207 浏览

python - 你如何询问 gstreamer 是否可以播放文件?

我正在尝试使用 Python Gstreamer 绑定编写一个简单的命令行音频播放器。gstreamer API 中是否有一个函数可以提前确定当前安装的编解码器集是否可以对特定文件 (URI) 进行解码和播放?

0 投票
3 回答
18670 浏览

c - GStreamer 插件搜索路径?

我可以以某种方式告诉 GStreamer 在指定目录中查找插件吗?

0 投票
1 回答
2338 浏览

python - 使用 v4l2 捕获并使用 gstreamer 显示预览

如何在 Q_BUF、STREAM_ON、DQ_BUF 之后将缓冲区/用户指针传递给 gstreamer。

我尝试使用 PIL 的方法 frombuffer,但没有成功。所以我现在想使用 gst sink。

我应该使用 gst.parse_launch() 以及如何使用?

有人做过吗?