我正在使用gstreamer在python中构建流应用程序。
应用程序使用tee
元素将数据写入rtmpsink和fileink。在理想的环境(本地网络)中,启动和流式传输可以正常工作,但是例如,如果流式传输服务器断开连接怎么办?我试图弄清楚如何保持管道运行,从而在发生错误后继续写入filesink。
我要归档的内容:
问题:
是否可以存档我要执行的操作?
如何将其归档(动态管道/探针/额外元素)?
任何解释,示例或指向正确方向的信息都将不胜感激。
注意:
GST版本:gstreamer 1.3.90(rtmpsink,faac,x264enc)
作业系统:ubuntu 14.04 LTS
流服务器:wowza 4.x
测试应用程序(代码): link
启动后的管道(确定): link
rtmpsink错误后的管道(无法写入数据): link
rtmpsink错误后的日志片段(无法写入数据): link
最佳答案
我不确定使用单个管道可以获得的系统可靠性。我建议做的是创建一个两个阶段的过程:
1) audio -> encode -> tee -> filesink
-> shmsink
2) shmsrc -> mux -> rtmpsink
然后为第二个管道创建包装器脚本。这是有关如何在videotestsrc中使用这些元素的示例。请注意,上限确实很重要-它们必须足够详细,才能知道共享内存中即将出现的情况。您也可以尝试使用TCP/UDP而不是共享内存的这种方法。我没有安装faac插件,但是管道可能是这样的:
关于python - Gstreamer,如何从(rtmpsink)错误中恢复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27905606/