即使发件人不在gstreamer

时间:2016-08-02 13:15:35

标签: gstreamer

我是gstreamer的新手,所以如果你能帮助我,我将不胜感激。

我正在尝试收听管道并将帧记录到文件中。 我尝试了以下管道:

gst-launch-1.0 udpsrc port=5600 do-timestamp=true ! application/x-rtp, payload=96 !  rtph264depay ! avdec_h264 ! clockoverlay ! jpegenc ! avimux ! filesink location=stream.avi

我想记录整个时间线,即使发件人没有提供任何帧数据。 默认情况下,当管道接收到一些有效帧时,记录器会附加帧。但是当发件人不发送数据时,我希望看到一些黑框。

1 个答案:

答案 0 :(得分:1)

我尝试了一下,我不认为你能用普通的gst-launch命令做到这一点。不幸的是,它可能涉及的是编写一个应用程序来检测数据包/缓冲区何时不再进入,然后修改管道。如果你想试一试,我建议使用input-selector这样的元素:

gst-launch-1.0 videotestsrc pattern=black ! video/x-raw ! input-selector name=selector ! clockoverlay ! jpegenc ! avimux ! filesink location=stream.avi

然后我创建了一个将流附加到输入选择器的方法:

udpsrc port=5600 do-timestamp=true ! application/x-rtp, payload=96 ! rtph264depay ! avdec_h264 ! identity name=buffer-checker

要检测没有进入的数据包,您可以在handoff元素上侦听identity信号,然后在超时时删除该流并切换到来自{的黑色测试模式{1}}使用videotestsrc上的active-pad属性。

使用input-selector元素几乎有效,但我不相信它会处理流的多个停止和启动。

无论如何,希望别人想出更好的主意。您还可以重新分析您的顶级方法,看看是否有办法处理多个视频剪辑而不是一个。