根据其RTSP AppSRC客户端控制AppSink管道状态
Controlling the state of appsink pipeline depending on its RTSP appsrc clients
我具有下面的层次结构:
sourcePipeline
- gstelement Pipeline(具有videotestsrc和appsink)
- gstappsrc指针阵列推动样品
gstrtspserver
-
gstrtspmediafactory(具有名为" appsrc0"的GSTAPPSRC,并安装在"/test")
-
gstrtspmediafactory(具有名为" appsrc1"的gstappsrc,并安装在"/test2"上)
我在appsink和appsrc上的帽子是
caps = "video/x-raw,width=640,height=512,format=GRAY8"
因此,在媒体工厂中,我会收听媒体构造的信号,并注册AppsRC指针以源管道。同样,当他们的媒体将状态更改为gstrongtate_null时,我会从sourcePipeline中的appsrc数组中删除指针。
在源管道上,AppSink将样本推到AppSRC一个一个。当数组上没有APPSRC时,管道的状态将更改为GstrongTATE_NULL,直到再次加入第一个AppSRC。
我有一些问题和问题:
当第一个客户端连接到RTSP时,客户端会立即获取流。当第二个连接到第二个坐骑时,当GSTRTSPMedia将其状态更改为GstrongTATE_PLAYING时,流暂停,5-6秒后再次恢复流。不过,这有时不会发生。该流失败,在重新启动程序之前,我无法再次将其提起。
我控制源pline的方法正确吗?我应该如何在RTSP服务器上进行操作?
我在True上设置了AppSRC的块属性。如果我不将其设置为true,它将使用所有内存,直到系统无响应为止。同样,这里的正确方法是什么?
我目前正在使用push_sample将缓冲区推向AppSRC。push_sample和push_buffer有什么区别?哪个更有效?
当不同的山顶上的2个客户观看流时,当其中1个断开或停止流时,它会破坏流。我在GSTRTSPMedia上检查新州信号,以了解RTSP管道的状态。显然,这种方法不起作用,这里的正确方法是什么?
我不需要在用
求解时间stamp之后,在appsink和appsrc之间进行任何同步GST_BUFFER_TIMESTAMP(buf) = timestamps[i];
GST_BUFFER_DURATION(buf) = bufferDuration;
timestamps[i] += GST_BUFFER_DURATION(buf);
我已经怀疑缓冲时间戳记,但无法弄清楚如何解决它们。只要在源管道和接收器管道之间使用相同的时钟,这3行很容易解决问题。
- 控制允许动态运行c++的并发操作数
- 从控制台中删除最后打印的元素
- 是否可以使用if constexpr删除控制流语句
- 无法在windows控制台中为C++程序提供必要的输入
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 查找 GCD:并非所有控制路径都返回值
- 通过 API 控制 DJI 相机
- 禁止在控制台上记录谷神星
- 是否可以使用一个类来控制 C++ 中另一个类的对象?(阿杜伊诺)
- 如何删除列出的"QGraphicsPathItem"对象以控制进程内存使用情况?
- 我在 C++ 代码中遇到错误警告:控制到达非空函数 [-Wreturn 类型] 的末尾
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- wx通用目录控制错误"wxTheFileIconsTable was nullptr"
- main() 中的 std::cout 在调试期间不会在调试控制台中打印任何内容
- Cython通过浮点数的最快方式,用于高频控制回路
- 用户控制从 c++ 到 java 脚本的 Webassembly 访问调用
- C ++,如何从控制台中输入的字符串中删除字母?
- 如何从单独的线程控制 SFML 窗口?
- 如何防止 Windows 控制台上的回车键自动滚动
- 根据其RTSP AppSRC客户端控制AppSink管道状态