Gstreamer-使用Tee元素挂起显示和录制视频

问题描述 投票:0回答:1

我的目标是同时流式传输和录制视频。

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调试级别,以查看那里是否有可疑的东西-没什么。

任务应该很简单,我必须在这里丢失一些内容。

提前感谢!

gstreamer
1个回答
0
投票

对于此使用案例,默认x264设置的延迟太高。对tune=zerolatency元素使用x264enc选项,或在显示路径的tee后面增加队列大小。这将防止预卷的死锁。

© www.soinside.com 2019 - 2024. All rights reserved.