Конвейер Gstreamer застрял в состоянии предварительной проверки при передаче только аудио в конвейер видео - PullRequest
5 голосов
/ 16 декабря 2011

Если у меня есть конвейер вроде:

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 ]

8 голосов
/ 16 декабря 2011

Вы можете просто установить для свойства async-handling autovideosink значение true:

... ! autovideosink async-handling=true

Это позволит аудиосинке воспроизводить звук во время ожидания видеосигнала.

2 голосов
/ 16 декабря 2011

Это один вид ошибки декодирования2

см. Я проверил некоторые конвейеры и узнаю следующие вещи

pipe1:

gst-launch filesrc location="filename" !
decodebin2 name=dec !
queue ! ffmpegcolorspace ! autovideosink dec. !
queue ! audioconvert ! audioresample ! autoaudiosink

этот конвейер1 прекрасно работает со всеми форматами контейнеров, такими как .mkv, .mp4, ogg

, но когда вы даете файл расширения кодека, он создает проблему, о которой вы сказали

Я проверил это с файлом .h264

pipe2:

 gst-launch filesrc location="smal.h264" ! decodebin2 name=dec ! queue !
 autovideosink dec. ! queue ! autoaudiosink

pipe3:

 gst-launch filesrc location="smal.aac" ! decodebin2 name=dec ! queue !
 autovideosink dec. ! queue ! autoaudiosink

у всех одна и та же проблема, они не могут предварительно загрузить ahaead и не могут показать ошибку неверного подключения пэда

если вы попробуете только одно допустимое подключение пэда, то они отлично работают

pipe4:

 gst-launch filesrc location="smal.h264" ! decodebin2 ! autovideosink 

pipe5:

 gst-launch filesrc location="smal.aac" ! decodebin2 ! autoaudiosink

конвейер 4 и 5 работает нормально

даже

gst-launch filesrc location="/home/dk/Music/Vangelis - Alpha.mp3" !
decodebin2 ! audioconvert ! audioresample ! autoaudiosink

это также будет нормально работать ...

Теперь, чтобы лучше понять эту ошибку и исправить ее, нам нужно изучить и изменить исходный код decodebin2 .........> !!!!

...