我是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
我想记录整个时间线,即使发件人没有提供任何帧数据。 默认情况下,当管道接收到一些有效帧时,记录器会附加帧。但是当发件人不发送数据时,我希望看到一些黑框。
答案 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
元素几乎有效,但我不相信它会处理流的多个停止和启动。
无论如何,希望别人想出更好的主意。您还可以重新分析您的顶级方法,看看是否有办法处理多个视频剪辑而不是一个。