【问题标题】:Gstreamer - display and record video using Tee element hangsGstreamer - 使用 Tee 元素显示和录制视频挂起
【发布时间】:2019-11-24 22:57:05
【问题描述】:

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

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 状态并挂在那里。显示的视频也是静止的,没有保存视频文件。

这里是从 dot dump null->ready 状态生成的 svg 文件:https://drive.google.com/file/d/1oGwDufDdljbuKr8b0YURvg5VxPzMtQWb/view?usp=sharing

我已经在没有 tee 元素的情况下分别尝试了两个分支 - 两者都可以工作。我还在两个队列上尝试了不同的大写过滤器组合。我尝试提高 gstreamer 调试级别以查看是否有可疑之处 - 没有。

任务应该很简单,我一定在这里遗漏了一些东西。

提前致谢!

【问题讨论】:

    标签: gstreamer


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 2016-01-01
      相关资源
      最近更新 更多