如果我有一个像:
这样的管道gst-launch filesrc location="/home/dk/Music/Vangelis - Alpha.mp3" !
decodebin2 name=dec !
queue ! ffmpegcolorspace ! autovideosink dec. !
queue ! audioconvert ! audioresample ! autoaudiosink
如果输入源中没有视频,如何让它播放,但如果有视频则播放视频?我得到的只是:
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
答案 0 :(得分:8)
您可以将autovideosink的async-handling
属性设置为true:
... ! autovideosink async-handling=true
这将允许audiosink在视频链接等待时播放声音。
答案 1 :(得分:2)
它是decodebin2的一种错误
看到我测试了一些管道并了解了以下内容
<强> pipeline1:强>
gst-launch filesrc location="filename" !
decodebin2 name=dec !
queue ! ffmpegcolorspace ! autovideosink dec. !
queue ! audioconvert ! audioresample ! autoaudiosink
此管道1适用于所有容器格式,如.mkv,.mp4,ogg
但是当您提供编解码器扩展文件时,它会产生您所说的问题
我用.h264文件测试了它
<强> pipeline2:强>
gst-launch filesrc location="smal.h264" ! decodebin2 name=dec ! queue !
autovideosink dec. ! queue ! autoaudiosink
<强> pipeline3:强>
gst-launch filesrc location="smal.aac" ! decodebin2 name=dec ! queue !
autovideosink dec. ! queue ! autoaudiosink
所有人都有同样的问题他们无法预加载ahaead并且无法显示无效的pad连接错误
如果您只尝试单个有效的pad连接,那么它们可以正常工作
<强> pipeline4:强>
gst-launch filesrc location="smal.h264" ! decodebin2 ! autovideosink
<强> pipeline5:强>
gst-launch filesrc location="smal.aac" ! decodebin2 ! autoaudiosink
管道4和5工作正常
甚至
gst-launch filesrc location="/home/dk/Music/Vangelis - Alpha.mp3" !
decodebin2 ! audioconvert ! audioresample ! autoaudiosink
这也可行。
现在要更多地了解这个bug并修复它我们需要研究和更改decodebin2源代码.........&gt; !!!!