问题标签 [qtgstreamer]
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.
qt - Qt+GStreamer:如何在播放实时视频流时拍摄快照
我开发了一个基于 Qt 和 QtGstreamer 的视频播放器。它用于播放实时流 (RTSP)。我必须增加用户在播放实时流时拍摄快照而不干扰视频播放的可能性。
这是我制作的管道图:
我使用pad-added
来自的信号uridecodebin
将我的元素动态添加和链接到管道,接收到的上限的功能。
拍摄快照的方法:
总线消息回调:
问题是:
- 当我将元素的属性设置为时,我收到停止管道的
snapshot
事件,所以我需要重新启动它,这会冻结视频播放大约半秒,这在我的情况下是不可接受的。true
pngenc
EOS
- 当我将元素的属性
snapshot
设置为时,我没有管道扰动,但我的 png 文件不断增长,直到我再次调用该方法。false
pngenc
Player::takeSnapshot()
我哪里错了?有更好的方法吗?我尝试为我的分支创建一个QGst::Bin
元素,但没有成功。snapshot
焊盘探针呢?
提前致谢
gstreamer - 从描述创建 QtGStreamer 管道的问题
我正在使用 Qt GStreamer 包装器并尝试按如下方式创建管道:
但是,当我运行它时,我得到了错误:
我认为存在一些问题,"/"
但不确定如何解决。
gstreamer 管道具有:
工作正常。
我尝试转义引号,例如:
但这给出了:
gstreamer - QtGstreamer Appsink:挂起和缓慢/不可用的样本
我的目标是创建一个简单的自定义接收器,能够接收来自管道的数据,这些数据应该用于不同的应用程序(录制、广播、内部缓冲等)。
在我的第一次尝试中,这个想法是重新传输 Http(s)/Udp/etc。再次通过 Http 流式传输,因此我使用了 souphttpsrc、队列和 QHttp 将数据提供给一个或多个客户端。
这些应用程序似乎可以工作,因为我可以使用我的自定义接收器启动管道(默认情况下,它只会忽略任何样本,直到至少连接一个客户端),所以我只需复制客户端响应中的样本。
真正奇怪的是,下载速度真的非常慢(5-10 KB/s 而不是预期的 2-300KB/s),而且数据似乎完全无法使用。我尝试在 sink 之前在管道中插入一个 decodebin,速度达到 33 MBit/s,所以我会排除主线程中方法的 Queued 调用引起的性能问题,负责将实际样本发送到网络; 即使在这种情况下,数据似乎也只是垃圾。
其次,如果我添加一个 tee(或多队列)以并行运行一个 autovideosink 和/或一个 autoaudiosink,管道会在启动时卡住(这不会仅发生在两个 autosink 上),并且如果我尝试将两个自定义应用程序链接到 T 恤。
调试代码似乎在管道挂起时永远不会调用 newSample(),即使总线上收到的最后一条消息是自定义接收器的播放状态更改。
谢谢!
这里的代码:
QGst::FlowReturn MultiHttpSink::newSample() {
更新
gstreamer 的调试日志报告了一些有用的东西......
传入网络数据包的大小为 4096,但大多数情况下缓冲区的大小为 1430……正在调查……我认为我应该以不同的方式访问缓冲区以获得对原始数据的访问。
网络包的大小是1430,4096好像是缓冲区...
为什么传输缓慢且毫无意义目前仍然是个谜。为什么它也挂了!
更新 2
我也尝试过这种方式,结果相同(报告的尺寸相同):
这里是最后一个版本的输出,和以前一样:
更新 3
这是每个数据块之间的日志:
gstreamer - QtGstreamer & g_signal_connect
我需要在我的 qt-gstreamer 应用程序中使用 typefind 元素。
似乎缺少特定的 Qt 元素绑定,所以问题是:在这种情况下,即使使用 qt-gstreamer,我也应该使用 g_signal_connect 吗?如何?
我是 gt-gstreamer 的初学者,我仍然不清楚 g_signal_connect 是如何以 Qt 风格实现的,或者如何将它们一起使用。
这是用C编写的代码:
谢谢!
gstreamer - QtGstreamer:AppSink & tee
我已经编写了一个自定义的 QtGStreamer 应用程序,它工作正常。我在尝试使用 tee 拆分管道以处理流记录时遇到了麻烦,因为管道开始预滚动但从未进入播放状态。
我的管道:
如果我评论两个 tee 分支中的任何一个,任何事情都会按预期工作。
这也有效:
为什么我的 AppSink 只能单独工作?
c++ - 将 Qt 与 QtGStreamer 绑定
我正在尝试制作一个简单的 qt c++ VoIP 应用程序,当我搜索时,我找到了 QtGStreamer Lib 并想让它工作。我从这里下载最新版本 1.2 。
当我转到示例文件夹并尝试编译 VoIP 示例时,我收到了以下错误:
Qt5GStreamer-1.0 development package not found
我尝试的是CONFIG += link_pkgconfig
在 .pro 文件中注释这一行,并将 QtGstreamer 文件夹附带的 src 文件夹添加到文件夹项目中。我还将它添加到 .pro 文件
INCLUDEPATH += $$PWD/src
中,这是 Libs 文件夹的路径
现在我收到一个错误,我需要添加 boost Lib,所以我通过将其添加到 .pro 文件来添加它
现在我收到很多错误,说(未定义的对 .. 的引用)130 错误。不确定要尝试什么。
该文件附带包含自述文件我下载了依赖项但同样的错误我认为我没有正确链接它的问题
我仍然是第 3 方的初学者并在 C++ 中链接库,
我的操作系统是 Windows 提前谢谢
qt - QtGStreamer 在 QML 上流式传输视频
我尝试使用 QtGStreamer 1.0 在 qml 上创建媒体播放器。我使用一些示例 n QtGStreamer 示例,播放器应用程序运行正常,但不是 qmlplayer 应用程序。它构建成功但不能用完。输出日志显示:
QML 调试已启用。仅在安全的环境中使用。
创建 qtquick2videosink 失败。确保已正确安装
我需要 QtGStreamer 在 qml 上运行视频的帮助。谢谢
qt - Gstreamer 暂停/恢复管道问题
我在运行 Ubuntu 14.04 的 nVidia TX1 上使用 qt-gstreamer 1.2 和 gstreamer 1.2.4。
我有一个带有相机预览 + 录制 + 以太网流 + Wifi 流的管道,我想让管道动态化。例如,我可以在正在运行的管道上添加/删除录制/流式传输。
我暂停管道以添加/删除元素,然后在不使用焊盘及其阻塞功能的情况下恢复。这工作正常。但是管道在多次添加/删除元素后挂起。当我暂停管道时它挂起。
我发现它的暂停/恢复在暂停时挂起管道而不是链接/取消链接元素。如果我在管道中添加较少的元素,例如只添加预览和录制所需的元素,那么管道会在很长一段时间后挂起,然后是所有元素。
所有接收器元素同步和异步都是错误的。
为了测试,我每 1 秒暂停并播放一次管道。
管道在几次暂停/恢复后挂起。如果我删除最后 2 行 linkmany 并添加,我可以暂停/恢复比添加所有元素的次数更多。
那么这里有什么问题呢?我怎样才能有效地暂停/播放管道?
gstreamer - QtGStreamer 没有在来自相机的流媒体上产生预期的输出
我正在尝试使用 QtGStreamer 流式传输相机帧并将其渲染到 QML 窗口上。我有一个简单的 Gstreamer 管道,当我使用它时可以正常工作gst-launch-1.0
现在我创建了一个相应的 QtGStreamer 管道:
所以首先,这真的很慢。虽然最初的 gstreamer 命令以 30 帧/秒的速度轻松运行,但它以每秒几帧的速度运行。当我设置时,我也会在控制台上得到这个输出GST_DEBUG=3
我注意到的另一件事是渲染的帧,几乎是颜色方案被翻转了。因此,似乎沿线的某些东西也在翻转颜色通道。
编辑
我发现我需要添加一个 capsfilter 以获得正确的格式。所以添加如下内容:
然后通过添加它
然后链接它解决了这个问题。
虽然现在我的问题是 gstreamer 如何在我的原始管道中选择有效格式?