Как отображать AVI видео с gstreamer?

Я хочу написать программу отслеживания объектов, которая должна воспроизводить отслеживаемый результат. Поскольку gstreamer - хорошая мультимедийная рамочная работа, я хочу использовать ее в своей демо-программе. Но я не знаю, как реализовать отображение видео в деталях. Может ли кто-нибудь помочь?

Плагин Avidemux может отделить аудио и видео часть от AVI файла, но что делать дальше?

Если я открою несжатый avi файл, это сработает, если я напрямую свяжу выходную площадку плагина avidemux с приемником видео?

Кстати, какая видеокамера лучше в аспекте эффективности? Я посмотрел ссылку на плагин и нашел много видеопотоков: glimagesink, osxvideosink, sdlvideosink, ximagesink, xvimagesink, dfbvideosink, fbdevsink, gconfvideosink Всегда ли работает autovideosink? Моя платформа - ubuntu 9.04.

ТИА ~

Ответ 1

Как сказал Ник Хаддл, playbin или decodebin - хорошее место для начала. Для экспериментов я предлагаю использовать gst-запуск, например:

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

Я использую autoaudiosink и autovideosink, потому что они обычно работают. Когда вы нашли конвейер, который работает, попробуйте построить тот же конвейер с кодом. Если вам не нужен звук, просто пропустите эту часть конвейера. Для отображения видео лучше всего использовать xvimagesink (по крайней мере, в UNIX).

Ответ 2

Я бы рекомендовал использовать playbin (справочная страница, документация) или фрагмент декодирования (справочная страница, документация). Это значительно упрощает процесс создания gstreamer-конвейеров для различных типов видеофайлов. С каждой из них вы можете использовать приемник видео с помощью GstXOverlay интерфейса. Подробнее см. Вставка видео-окна в ваше приложение.