问题标签 [python-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 投票
2 回答
1608 浏览

gstreamer - 在带有 GStreamer 的 Python 中,如何使用文件对象作为输入源?

我目前正在做:

但是uri,我如何使用原始文件源而不是使用source_file = request.POST['file'].file. (也许这会从字符串加载视频文件?)

到目前为止,我的研究使我找到了appsrchttp://ingo.fargonauten.de/node/447),但我不确定如何将它与GStreamer 1.0一起使用,因为我无法弄清楚如何将文件加载到缓冲区中:

0 投票
1 回答
2476 浏览

audio-streaming - 用于音频会议的 Gstreamer audiomixer 实现,在向用户 [1] 流式传输时取消用户 [1] 贡献

下面是“理论”管道,它将取消特定用户在音频会议混音器中的音频贡献。理论上是这样的,我们将用户的音频样本从原始样本中反转,最后添加混音器输出中。它应该取消。但是我不知道为什么我不在下面的管道中工作。混音器的想法是它汇总了所有用户的音频贡献,当流回单个用户时,他们的贡献被“反转”+“加法器”元素取消。

我怀疑打卡。还是因为这些管道是分开的,即不在单个管道中?

根据上述理论工作的示例管道,管道只有一个音频源,并且在加法器中被取消。

音频反转度=1

音频反转度=0.55

0 投票
1 回答
2858 浏览

python - GStreamer:将延迟/间隙/移位引入音频

我在 gstreamer 中有以下管道设置:

来自两个单独的 USB 音频接口和一个脉冲音频接收器 (pulsesink) 的两个脉冲音频源 (pulsesrc)。我正在使用加法器组件组合两个传入的音频流。不幸的是,两个音频通道之间存在轻微延迟。

我正在使用系统时间/时钟进行同步。两个音频接口都连接到同一个 USB 集线器。我猜音频在被源接收之前已经有轻微的延迟(由于时钟不同)。

这就是为什么我想向第一个音频通道(第二个稍微落后)引入延迟/间隙/移位来弥补这一点。

到目前为止,我尝试设置第一个队列的属性“min-threshold-time”。不幸的是,管道补偿了这种延迟,两个音频流都得到了同样的延迟。我还检查了元素“audioecho”。不幸的是,它缺少“干/湿”属性。这意味着原始信号总是在其原始时间播放,然后延迟尾部开始播放(这对我一点帮助都没有)。

任何进一步的想法如何解决这个问题?也许增加了沉默的间隙?或者我可能缺少的其他参数。

我已经使用 Python 实现了这个管道。先感谢您!

0 投票
1 回答
3040 浏览

python - 如何在 Python Gstreamer 中添加和删除动态音频设备

我正在尝试编写一个 Gstreamer Python 程序来控制我家中的整个家庭音频系统。基本前提是我将有多种不同的来源选择(Pandora、MP3、谷歌音乐等),并且能够在我家的不同“区域”中播放它们。我已经让它可以动态地将一个区域添加到当前正在播放的管道中,但是当我尝试删除一个区域时,音频会停止在所有区域中播放。这是相关代码,如有需要我可以发布更多:

基本设置:

0 投票
1 回答
185 浏览

gstreamer - 视频混合选项

我正在做一个更大的视频墙项目,并希望在单个显示器上显示多个视频源。

像这样的东西——

在此处输入图像描述

我所有的选择是什么?

  1. 带有 JMF 的 Java
  2. 带有 GStreamer 绑定的 Python

在致力于一项技术之前,我想清楚地了解可用资源及其局限性。

0 投票
3 回答
23844 浏览

python - 用于 Windows 的 gstreamer python 绑定

我正在研究 gstreamer 作为一种从列表中选择视频设备以将其提供给 opencv 脚本的方法。

我绝对不明白如何在 Windows 中将 gstreamer 与 python 一起使用。我从gstreamer 官方网站安装了Windows gstreamer 1.07 二进制文件。但是,我无法在 python 中导入和模块。pygstgst

我检查了gstreamer的安装,似乎没有pygst.py提供。然而,有一个名为的文件gst-env包含环境变量的路径(在安装时未添加到系统变量中。我检查了。

此处此处有关同一问题的其他问题,例如,都使用 gstreamer 的winbuild版本。为什么呢?

我完全迷失了这个。

编辑

好的,我使用适用于 Gstreamer 0.10 的 SDK(其中有一个pygst.py)对其进行了管理,但是由于 0.10 是“生命终结”,因此没有办法使用 Gstreamer 1.0 系列吗?

0 投票
2 回答
1269 浏览

python - 在 GStreamer 1.0 中是否仍然可以有独立的 Python 元素?

我有一个用 gst-python 为 GStreamer 0.10 编写的应用程序,我正在尝试移植到 GStreamer 1.0。

在我的应用程序中,我有一些用 Python 编写的自定义元素( 和 的子类gst.BaseSrcgst.BaseTransform。每个 python 元素都有自己的文件并放置在/usr/lib/gstreamer-0.10/python其中gst-launch并且gst-inspect可以拾取它们(它们会这样做)。

这非常方便,因为它使我可以直接在命令行上试验不同的管道。

现在我正在尝试移植我的应用程序(根据本指南https://wiki.ubuntu.com/Novacut/GStreamer1.0),即使仍然可以使用 PyGI 编写 python 元素,它看起来像将它们存储在单独的文件中并将它们集成到 GStreamer 中的可能性已经消失。

我发现的所有示例都讨论了将元素放入您正在编写的程序中,然后通过调用注册它们Gst.Element.register,但如果我这样做,则只能直接从该程序访问我的自定义元素,我希望它们独立工作(使用 gst-launch),无需在程序中编写我的过滤器链。

那么有谁知道 GStreamer 1.0 是否仍然可以做到这一点?

0 投票
1 回答
1332 浏览

python - Pocketsphinx + Gstreamer 比赛条件?Pocketsphinx 不能在 Python 脚本中同时收听音频 + 录音?

概述:所以这是对我最后一个问题的跟进(这里)。我将很快发布完整的答案。我可以让 pocketsphinx 通过 Gstreamer 在 Python 中识别来自我的 PS3 Eye 的音频输入。通过指定正确的 alsa 设备(在我的情况下为 hw:1 )。

ISSUE:我的下一个问题似乎涉及一个微小的竞争条件,涉及我的麦克风已经在使用中并且需要能够记录一些东西。

想象一下:

  1. 我启动了我的 python 守护进程,它目前正在监听。
  2. 我对着麦克风说 Hello Scarlett(Pocketsphinx 匹配关键字并开始记录所有输入)
  3. 音频旨在记录到 /tmp/ 目录中的 wav 文件中,并假设一直保留在那里直到检测到静音

现在看来,当我开始第 3 步时,麦克风再次停止工作。我跑了一些详细的选项来试图弄清楚发生了什么,但检查我的 /tmp/ 目录告诉我一切:

文件大小为 0 字节。没有任何东西被记录下来。

为了确认我通过 strace 运行了该过程并确认了我的怀疑:

问题:我能做些什么来完成这项工作?

这是python代码。

监听器.py:

这是recorder.py:


关于调试此问题的最佳方法的想法?

谢谢。

0 投票
2 回答
2984 浏览

python - 链接此 gstreamer 管道的正确方法是什么?

我如何需要在 python 代码中链接这个 gstreamer 管道?(不使用 gst.launch()!)

当我尝试创建垫对象时-

它返回无类型。我还将缓冲探针连接到这个垫子上。

0 投票
1 回答
1842 浏览

python - Python + GStreamer:将视频缩放到窗口

我在将 GStreamer 的视频输出重新缩放到显示视频的窗口尺寸(保留视频的纵横比)时遇到了一些问题。问题是我首先需要预卷视频以便能够通过检索协商的上限来确定其尺寸,然后计算它需要显示的尺寸以适合窗口。一旦我预卷了视频并获得了尺寸上限,我就无法再更改视频的尺寸了。设置新的上限仍会导致视频以其原始大小输出。我必须怎么做才能解决这个问题?

只是为了完整。在当前的实现中,我无法渲染到 OpenGL 纹理,这很容易解决这个问题,因为您可以简单地将输出渲染到纹理并缩放它以适应屏幕。我必须在 pygame 表面上绘制输出,它需要具有正确的尺寸。pygame 确实提供了缩放其表面的功能,但我认为这样的实现(就像我现在所拥有的那样)比直接从 GStreamer 检索正确大小的帧要慢(我说的对吗?)

这是我加载和显示视频的代码(我省略了主循环的内容):