管道未完成从READY到PAUSED的转换

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

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

管道如下:

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

并且没有完成从READY到PAUSED的转换。如果我执行以下操作之一,它将完成转换(然后通过移动到PLAYING正确播放):

  1. 从三通中取出两个分支中的一个(所以x264enc单独工作)
  2. 从分支标题中删除x264enc元素到appsink。

这里有一个图表,其管道与上面的管道非常接近,显示了同样的问题。 'guilty'元素是仍处于READY-> PAUSED转换中的appsink,但我看不出任何理由。顺便说一句,如果我从appsink分支中删除x264enc它可以工作!

为什么? Pipeline

gstreamer
1个回答
0
投票

尝试选择tune=zerolatency作为x264enc元素。或者在queue之后增加tee尺寸。原因是x264enc的默认配置具有比默认queue大小更高的延迟。例如。在产生任何数据之前,它比其他queue路径可以容纳更多。所以两个分支相互僵局,无法预卷。

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