当仅向视频管道提供音频时,Gstreamer管道处于预卷状态

时间:2011-12-15 22:50:30

标签: c audio video gstreamer

如果我有一个像:

这样的管道
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 ...

2 个答案:

答案 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; !!!!