管道未完成从就绪到暂停的转换 [英] Pipeline does not complete transition from READY to PAUSED

查看:13
本文介绍了管道未完成从就绪到暂停的转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用一个管道,该管道应该播放文件,同时生成用于其他目的的缩放版本(因此是应用程序接收器)。

管道如下:

gst-launch-1.0.exe filesrc location=a.mp4 ! decodebin ! tee name=fork 
   fork. ! queue ! videoconvert ! autovideosink 
   fork. ! queue ! videoconvert ! videoscale ! video/x-raw,format=I420,width=320,height=180 ! x264enc ! appsink

并且不会完成从就绪到暂停的转换。如果我执行以下操作之一,它会完成转换(然后通过移动到播放来正确播放):

  1. 从TEE中删除两个分支中的一个(因此x264enc单独工作)
  2. 将x264enc元素从分支标题中删除到appink。

这里有一个图形,它的管道非常接近上面的那个,它显示了同样的问题。元素是仍处于就绪->暂停转换中的应用程序接收器,但我看不出有任何理由这样做。顺便说一句,如果我从应用程序接收器分支中删除x264enc,它就可以工作了!

为什么?

推荐答案

尝试tune=zerolatency元素的选项x264enc。或者,在tee之后增加queue大小。其原因是,其默认配置中的x264enc具有比默认queue大小更高的延迟。例如,在生成任何数据之前,它消耗的资源超过了其他queue路径所能容纳的数量。因此,这两个分支彼此死锁,无法预滚。

这篇关于管道未完成从就绪到暂停的转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆