我正在使用gstreamer在python中构建流应用程序。
应用程序使用tee
元素将数据写入rtmpsink和filesink。启动和流式传输在理想环境(本地网络)中工作正常但是如果与流服务器断开连接该怎么办?我正试图弄清楚如何保持管道运行,从而在发生错误后继续写入文件链接......
我想要存档的内容:
问题(S):
是否可以归档我正在尝试做的事情?
如何存档(动态管道/探测/额外元素)?
非常感谢任何解释,示例或指向正确的方向。
注意:的
Gst版本: gstreamer 1.3.90(rtmpsink,faac,x264enc)
OS: ubuntu 14.04 LTS
流媒体服务器: wowza 4.x
答案 0 :(得分:1)
我不确定使用单一管道的系统有多可靠。我建议做的是创建一个两阶段的过程:
1) audio -> encode -> tee -> filesink
-> shmsink
2) shmsrc -> mux -> rtmpsink
然后为第二个管道创建一个包装器脚本。以下是如何将这些元素与videotestsrc一起使用的示例。请注意,上限非常重要 - 它们必须足够详细,以了解共享内存中的内容。
gst-launch-1.0 videotestsrc! tee name = t!排队!视频转换! ximagesink t。 ! video / x-raw,width = 400,height = 400,format = BGRA! shmsink wait-for-connection = false socket-path = / tmp / shr
gst-launch-1.0 shmsrc socket-path = / tmp / shr! video / x-raw,width = 400,height = 400,format = BGRA,framerate = 30/1! 视频转换! ximagesink
您也可以尝试使用TCP / UDP而不是共享内存。我没有安装faac插件,但管道可能是这样的:
音频 - > faac - > rtpmp4apay - > udpsink host = localhost port = 1919
udpsrc port = 1919 - > rtpmp4adepay - > mux - > rtmpsink