我的目标是同时流式传输和录制视频。
Gstreamer版本:1.16.1,操作系统:debian 11
起初,我有一个更复杂的管道,其中一个分支上包含合成器,并且具有不同的自定义过滤器。我构造的管道的简化版本如下:
gst-launch-1.0 videotestsrc ! "video/x-raw,width=500,height=300,framerate=50/1" ! tee name=t \
t. ! queue ! x264enc ! splitmuxsink name=mux_sink max-files=10000 next-file=5 max-size-time=600000000 location=video%02d.mp4 \
t. ! queue ! "video/x-raw,width=500,height=300,framerate=50/1" ! glimagesink
此管道如何作用于我的系统上是它毫无问题地启动,但从NULL状态变为READY状态并挂在那里。显示的视频也是固定的,并且没有视频文件被保存。
这里是从点转储null生成的svg文件->就绪状态:https://drive.google.com/file/d/1oGwDufDdljbuKr8b0YURvg5VxPzMtQWb/view?usp=sharing
我已经在没有tee元素的情况下分别尝试了两个分支-都正常工作。我还尝试了在两个队列上使用大写过滤器的不同组合。我尝试提高gstreamer调试级别,以查看那里是否有可疑的东西-没什么。
任务应该很简单,我必须在这里丢失一些内容。
提前感谢!
对于此使用案例,默认x264设置的延迟太高。对tune=zerolatency
元素使用x264enc
选项,或在显示路径的tee后面增加队列大小。这将防止预卷的死锁。