我正在使用应该播放文件的管道,同时为其他目的生成缩放版本(因此应用程序链接)。
管道如下:
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正确播放):
这里有一个图表,其管道与上面的管道非常接近,显示了同样的问题。 'guilty'元素是仍处于READY-> PAUSED转换中的appsink,但我看不出任何理由。顺便说一句,如果我从appsink分支中删除x264enc它可以工作!
尝试选择tune=zerolatency
作为x264enc
元素。或者在queue
之后增加tee
尺寸。原因是x264enc
的默认配置具有比默认queue
大小更高的延迟。例如。在产生任何数据之前,它比其他queue
路径可以容纳更多。所以两个分支相互僵局,无法预卷。