问题标签 [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 投票
0 回答
1029 浏览

pyqt - 使用 Python 和 PyQt 的 Gstreamer 不能很好地工作

我有两个树莓派。并希望将视频从一个流式传输到另一个。为此,我在第一个 Raspberry Pi 上使用了以下命令来流式传输视频:

在第二个 Raspberry Pi 中,我使用以下 pyqt 代码来捕获流式视频:

它工作得很好。现在我需要设计一个 GUI。我写了这段代码:

这段代码在我的 ubuntu 系统中运行良好。它显示了流式视频和一个按钮。但是当我在 Raspberry Pi 上运行此代码时,会显示一个窗口片刻,然后它就消失了。

我在 Ubunu 上收到以下警告:

(DO2.py:7495): GStreamer-WARNING **: gstpad.c:4506:store_sticky_event: 粘性事件排序错误,在“caps”之前得到“segment”

(DO2.py:7495): GStreamer-WARNING **: gstpad.c:4506:store_sticky_event: 粘性事件排序错误,在“caps”之前得到“segment”

这些在覆盆子上:

qgtkstyle 无法检测到当前的 gtk (DO2.py:7495):

GStreamer-WARNING **:gstpad.c:4506:store_sticky_event:粘性事件排序错误,在“caps”之前得到“segment”

(DO2.py:7495): GStreamer-WARNING **: gstpad.c:4506:store_sticky_event: 粘性事件排序错误,在“caps”分段错误之前得到“段”

请帮助我解决问题或指导我如何设计一个在 Raspberry 中工作的 GUI。多谢

0 投票
1 回答
641 浏览

gstreamer - GStreamer 的时间问题

我使用 GStreamer 播放音频,并且经常需要我在文件中的位置的时间戳。

如果我调整播放速率,无论是使用指定新播放速率的 seek 命令,还是使用诸如“pitch”之类的插件来调整“tempo”组件。当 GStreamer 调整音频的长度及其当前位置以考虑其播放速度时,所有时间都会超出窗口。例如,原来的 18 秒现在是 14 秒。
我还尝试停止音频并重新开始传递新设置,并以 1.00 的速率发出搜索,而且节奏速率也没有奏效。我暂时没有想法,因此向SO提出了这个请求。

示例代码

我尝试将持续时间和当前位置乘以调整,试图将时间戳拉回或推回其位置,就好像它以正常速度播放但无济于事。

我一直在努力解决这个问题,真正让我大吃一惊的是,如果我使用 Vlc 作为我的音频引擎执行相同的任务,它可以工作,但我必须单独改变音高。转移到 GStreamer 的全部原因是音高插件跟踪“节奏”组件,但如果我无法获得准确和一致的时间戳,该项目就死定了。

我的问题,有没有人 a) 遇到这个问题 b) 掌握了它

0 投票
1 回答
806 浏览

gstreamer - uvch264 中的 vidsrc 失败

以下管道失败。如何调试这个?出了什么问题?

但是 vfsrc 工作正常。

谢谢,
斯内哈

0 投票
1 回答
445 浏览

gstreamer - 方法在 RTSPMediaFactory 中不可用

我正在使用 Gstreamer RTSPMediaFactory ( libgstrtspserver1.0) v 1.2.3-0。从 Python 中,我派生自 MediaFactory,并重写了create_element. 不幸的是,我的 create_element 从未被调用,因此 RtspServer 会抱怨no launch line specified

我打印了在超级实例中声明的所有方法,得到了这个:

['set_buffer_size','set_suspend_mode','set_protocols','construct','get_suspend_mode','get_launch','set_launch','is_eos_shutdown','get_permissions','get_address_pool','set_shared','is_shared',' set_address_pool','get_protocols','get_buffer_size','set_permissions','set_eos_shutdown']

create_element

难怪,我的实现永远不会被调用......但为什么没有create_element功能?我该怎么办?

0 投票
1 回答
62 浏览

gstreamer - gst-uninstalled 在 audioconvert 上中断

我一直在努力在我的 ubuntu 14.04 系统上构建 gstreamer。

我最近发现了这里概述的非常有前途的 gst 卸载脚本:http: //arunraghavan.net/2014/07/quick-start-guide-to-gst-uninstalled-1-x/

不幸的是,当脚本尝试构建 audioconvert 时,我遇到了一些障碍:

https://gist.github.com/anonymous/2bedadba1c03c8223e5a

在这里查看实际卸载 gst 的脚本:http: //cgit.freedesktop.org/gstreamer/gstreamer/tree/scripts/gst-uninstalled 我看不到“稳定”版本的开关。有什么建议么?

0 投票
1 回答
2435 浏览

python-3.x - gstreamer视频进入python中的窗口

我有以下管道来流式传输视频:

发件人:

gst-launch-1.0 rpicamsrc 预览=0 !'视频/x-h264,宽度=1280,高度=720,帧率=15/1,配置文件=高'!队列 !rtph264pay!udpsink 主机=192.168.0.8 端口=50000

接收者:

gst-launch-1.0 udpsrc port=50000 caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264" !rtph264depay!解码器!自动视频接收器

这工作正常,但我想在 python 中做接收器,并将视频流引导到一个窗口中,不知何故像这样:

但是当流媒体开始时,窗口只是简单地关闭,程序结束时没有错误。任何想法可能有什么问题,我如何将视频输出引导到窗口中?

如果在没有 root 权限的情况下运行,则输出:

$ GST_DEBUG=3 python3.2 test.py

作为根输出:

GST_DEBUG=3 须藤 python3.2 test.py

所以 Gstreamer 没有错误,窗口在流启动时简单地关闭。

0 投票
1 回答
3313 浏览

python - 接收器在失败时重新启动而不停止管道

今天我决定将我的基于 的小脚本gst-launch转换为真正的 Python/GStreamer 应用程序,以添加一些功能。

由于. _ shout2send_filesinktee

shout2send由于网络问题,有时可能会停止。我想每隔 N 秒重新启动一次这个元素,直到连接恢复,而不停止管道,因为本地音频文件不应该受到网络条件的影响。

这是我尝试过的:

  1. 网络错误后一秒停止/启动管道(结果:流工作,本地文件被截断)
  2. 取消链接tee,将shout2send状态设置为NULL并将其从管道中删除(结果:GStreamer 严重错误,如Trying to dispose element ... but it is in PLAYING instead of the NULL state
  3. 试图了解在这种情况下如何使用焊盘(结果:与上面相同,但涉及更多代码)

我应该怎么办?

这是我的代码的样子:

更新(2015 年 9 月 12 日):添加了非工作代码 + 日志

我尝试遵循GStreamer doc 中的“动态更改管道”,但我的代码不起作用。

这是我在运行脚本GST_DEBUG=3并在流式传输时重新启动 Icecast 时看到的内容:

0 投票
0 回答
277 浏览

python - 如何在时间间隔内使用 gstreamer 录制音频

基本上我的问题与这个问题有些相同:如何在 gstreamer 中录制预定义时间的音频?

但是没有我可以在那里使用的答案,而且我对使用 gstreamer 也比较陌生。使用其他用户发布的问题中的代码,我可以添加什么来以 x 秒的时间间隔记录音频,每次捕获之间的暂停时间为 y 秒。

0 投票
1 回答
2290 浏览

python - Python GStreamer:为应用程序缓冲区获取 Meta Api

我正在使用 GStreamer 从 H264 中的 USB 网络摄像头(Logitech C920)捕获视频,我想在可能解码或将它们流式传输到网络之前分析 h264 帧。

基于互联网上的不同来源,我构建了一个 python2.7 脚本,它允许我将帧导入 python,基本上使用示意图 gst-launch 命令:

但是,我一直试图解释接收到的缓冲区。我已经花了相当长的时间试图了解 python gstreamer 如何将元 API 附加到缓冲区,但现在是徒劳的。如果我理解正确,如果我以某种方式将元 API 附加到缓冲区,我将获得一个允许我访问不同元素的结构以及有关帧编码的信息。我怎样才能做到这一点?(无需为帧编写我自己的解码器)

以下是我当前的脚本,带有一些示例输出:

以下是此脚本的一些示例输出:

我进行了很多搜索,但找不到一个示例如何将元 API 映射到包含 Python 中编码视频帧的缓冲区,我认为这应该不难,因为似乎提供了功能。

有什么建议么?

0 投票
2 回答
1104 浏览

python - 如何在python中使用带有gstreamer-1.0的pocketsphinx(5prealpha)?

我正在尝试创建一个小型 Python 脚本,该脚本将通过网络接收音频流,通过 pocketspinx 提供它以将语音转换为文本并根据 pocketsphinx 的输出运行一些命令。

我已经在 Ubuntu 15.10 vm 上安装了 sphinxbase 和 pocketsphinx (5prealpha),并且能够在 Python 中正确处理示例音频文件(pocketsphinx 安装的一部分)的内容。所以我有理由确定我的 sphinx 安装工作正常。不幸的是,测试 python 脚本无法处理连续音频并使用本机 pocketsphinx API。根据 cmusphinx 网站,我应该使用 gstreamer 进行连续翻译。不幸的是,关于如何在 Python 中将 pocketsphinx 与 gstreamer 一起使用的信息非常有限。根据我可以找到的示例,我拼凑了以下脚本。

发送方如下所示:

这应该从网络接收一个 udp 流,将其输入到 pocketsphinx 并将输出打印到终端。如果我更换'队列!口袋狮身人面像!fakesink 部分由 'wavenc !filesink',我确实得到了一个内容正确的有效音频文件,所以我知道网络发送部分工作正常。(我的测试机器上没有音频,所以我无法使用本地音频源进行测试)。

当我启动脚本时,我看到了 pocketspinx 配置,但是脚本似乎不再做任何事情了。当我使用 GST_DEBUG=*:4 启动脚本时,我看到以下输出:

根据我在谷歌上搜索的信息和示例,我不明白出了什么问题。

任何帮助将不胜感激。

尼科