问题标签 [gstreamer-1.0]

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 回答
3292 浏览

gstreamer - Gstreamer-1.0:mp4 容器中的多路复用原始视频

我有一个可以通过 gstreamer 播放的原始视频:

我可以编码这个视频:

我现在想把这个原始视频放在一个“无损”的 mp4 容器中,没有任何压缩。我怎样才能做到这一点?

0 投票
3 回答
10357 浏览

gstreamer - 如何使 rtpjitterbuffer 在没有时间戳的流上工作?

我正在使用 gstreamer 通过 RTP 发送 H.264 字节流。

然后我在其他 gstreamer 实例中接收帧、解码和显示。

这按原样工作,但我想尝试添加一个 rtpjitterbuffer 以完美平滑播放。

但是,一旦我这样做,接收器只会显示一个帧并冻结。

如果我用 MP4 文件替换 .h264 文件,播放效果很好。

我假设我的 h264 流没有启用抖动缓冲区所需的时间戳。

我通过添加identity datarate=1000000. 这允许 jitterbuffer 播放,但是这与我的帧速率有关,因为 P 帧的数据比 I 帧少。显然,该identity元素添加了正确的时间戳,但只是使用了错误的数字。

是否可以通过在某处正确指定“帧率”上限来自动在发件人上生成时间戳?到目前为止,我的尝试没有奏效。

0 投票
0 回答
342 浏览

c - imx6 yocto 项目上的 gstreamer 管道问题?

我正在开发 VVDN imx6 板,我已在其上成功安装了 gstreamer。在此命令之后:

我收到错误:

root@imx6slzbha:~# gst-launch-0.10 audiotestsrc !音频转换!autoaudiosink 将管道设置为 PAUSED ...

错误:管道不想暂停。

错误:来自元素/GstAlsaSink:autoaudiosink0-actual-sink-alsa:无法操作。

附加调试信息:/home/user/vvdn_sdk/stct_iog1/source/yocto/build/tmp/work/cortexa9hf-vfp-neon-m:

设备“默认”上的播放打开错误:没有这样的文件或目录将管道设置为 NULL ...

释放管道...

0 投票
0 回答
155 浏览

gstreamer - 将 gstreamer0.10 管道转换为 gstreamer1.0

您好,我需要将 gstreamer0.10 管道转换为 gstreamer1.0 管道,但一般对 gstreamer 了解不多。

我的 0.10 管道如下所示:

我试图像这样转换它:

但是当我尝试运行管道时出现此错误:

感谢您对此的任何帮助

0 投票
1 回答
3225 浏览

c++ - GStreamer 似乎没有调用我的回调

我有一个 Qt 应用程序,它在单独的线程中执行与 GStreamer 相关的工作。虽然我认为我已经遵循了设置信号回调的规则,但我指定的回调函数似乎没有被调用。

回调函数如下,它试图做的只是将一些内容记录到控制台以进行调试:

我用来启动和监视流(来自 IP 摄像机的实时 RTSP/H.264 馈送)的顺序是:

现在流实际上正在播放(视频出现)所以我假设那里没有问题。但是,我希望在管道开始播放时发布状态更改消息。这似乎没有发生,因为我没有看到来自Cb().

即使我也捕捉到message::eos,message::errormessage::element信号,我也没有得到任何输出。

我不确定这是否会成为问题,但以防万一,上面的代码稍微简化了。实际上有两个流正在播放,所以上面的第一个代码片段发生了两次,每个 playbin 一次(每个 playbin 的序列都是准确的,我只是看到没有必要使代码复杂化)。

然后创建并运行主循环。

如前所述,我没有看到回调函数的输出,那么我的消息去哪里了?

附录:对于它的价值,我也尝试了gst_bus_add_watch捕获所有消息而不是特定信号的方法,但仍然没有任何显示。我还应该提到,作为一个 Qt 应用程序,我gtk_init在代码中没有 - 我只是gst_init从主线程调用。

0 投票
2 回答
568 浏览

audio - 使用 gstreamer 播放 2 个剪辑,但将每个剪辑的音频引导到不同的音频通道

我需要能够同时播放 2 个不同的视频剪辑,将它们的音频缩混为单声道,并将音频分别播放到左/右声道。换句话说,将剪辑 1 的音频播放到左声道,将剪辑 2 的音频播放到右声道。

0 投票
3 回答
2304 浏览

python - 如何在 Gtk 对话框中显示视频?

我想在对话框中显示视频。

因此,我在其中创建了Gst.DrawingArea一个Gst.Pipeline带有Gst.Element“playbin”的 a 和 a 。

我创建了一个小例子,它打开一个带有按钮的窗口。如果单击该按钮,则会打开对话框并播放视频。但我只听到视频的音频。

在另一个只有一个窗口和一个 DrawingArea 的示例中,它工作正常。

甚至可以在 Gtk.Dialog 中显示视频吗?

我正在使用 Python 3.5.2。

编辑:

编辑 2: 按下播放按钮后的 UI

0 投票
0 回答
2862 浏览

opencv3.0 - 如何在opencv中为gstreamer设置管道?

背景介绍:我正在使用gstreamer(1.8.2版)连接来自IP摄像头的rtsp视频流并将其馈送到opencv(3.1版)。视频流为 640x480,10fps。网址如下: rtsp://192.168.0.200:554/1/h264minor

当我使用 gst-launch 测试视频流时,延迟非常低~300ms。命令如下。我很确定“延迟=0”是实现这种低延迟的最重要因素。 gst-launch-1.0 -v rtspsrc location=rtsp://192.168.0.200:554/1/h264minor latency=0 ! decodebin ! autovideosink

在opencv中,当我使用下面的代码打开rtsp流时,延迟非常大~2.35s。通过这种方式,我了解 gstreamer 将使用默认延迟自动设置管道。 VideoCapture cap; cap.open("rtsp://192.168.0.200:554/1/h264minor")

在研究了 opencv - cap_gstreamer.cpp 中的代码后,我发现我们可以为 gstreamer 设置一个手动管道,它与我用于 gst-launch 的管道相似。这样,我可以控制延迟设置。所以我改变了我的代码如下。根据 cap_gstreamer.cpp 中的注释,appsink 的名称可以是“appsink0”或“opencvsink”。但它总是无法设置此管道,我无法获取视频流。

错误信息如下:

GStreamer 插件:嵌入式视频播放停止;模块 udpsrc1 报告:内部数据流错误。OpenCV 错误:cvCaptureFromCAM_GStreamer,文件 /opencv-3.1.0/modules/videoio/src/cap_gstreamer.cpp,第 826 行中的未指定错误(GStreamer:无法启动管道)

我的问题是:

  1. 在opencv中获取rtsp流的正确gstreamer管道是什么?
  2. 或任何将“延迟”参数从opencv传递给gstreamer的替代方法?

我花了四天时间来了解 opencv 如何利用 gstreamer,我知道这还不够。不过,我想从 opencv/gstreamer 专家那里得到一些指导。欢迎任何提示/建议。提前致谢!

0 投票
1 回答
5527 浏览

ubuntu - Gstreamer 1.0 一源二汇展示

我想通过 v4l2src 从相机捕获图像,然后捕获的图​​像显示在 2 个接收器中,一个是原始图像,一个是处理后的图像。有谁知道如何做到这一点?我正在使用 gstreamer 1.0。

0 投票
0 回答
815 浏览

python - gstreamer 1.0 + python:从 PLAYING 管道中动态链接和取消链接队列

我正在尝试实现的管道架构

在将管道设置为 之前将两个队列链接在一​​起时,该脚本运行良好PLAYING,但我很难理解 Gstreamer 动态管道及其实现。此外,gstreamer 1.0 python 缺乏文档/示例也无济于事。

这是使用 tee 记录到文件并流式传输到 RTMP 服务器的工作脚本

我正在尝试做的事情:

  • 最初只从一个队列开始(queueFile),该队列记录到文件(始终运行)
  • 按需动态添加和删除队列到 tee ( queueCloud ) 流到服务器

gstreamer 1.0 和 gi python 的文档不多,非常感谢任何帮助。