gstreamer-vaapi конвейер, почему он не работает и как это исправить? - PullRequest
1 голос
/ 14 марта 2012

Я экспериментирую с gstreamer и считаю это работающим:

gst-launch-0.10 -v filesrc location=/path/to/file.mp4 ! qtdemux ! vaapidecode ! vaapisink

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

gst-launch-0.10 -v filesrc location=/path/to/file.mp4 ! qtdemux ! vaapidecode ! vaapidownload | appsink

этот пример тривиален, так как я все еще изучаю gstreamer, поэтому моя идея состоит в том, чтобы предоставить собственную текстуру opengl для gstreamer для воспроизведения видео, декодированного в vaapi. Любые советы для этого будут высоко оценены.

РЕДАКТИРОВАТЬ:

gst-inspect:

vaapidecode : http://pastebin.com/8TSJF7jN

vaapidownload : http://pastebin.com/JzV17v33

vaapisink : http://pastebin.com/ZkMBVh8v

appsink : http://pastebin.com/ehkQsraM

Это вывод из второго конвейера: http://pastebin.com/9mqjsLUq

UPDATE:

Тот же вывод, но с уровнем журнала 3: http://pastebin.com/GRGTVYVm

Ответы [ 3 ]

0 голосов
/ 15 марта 2012

Судя по выводу, который вы выложили для второй командной строки, команда работает. vaapidecode декодирует видео на x-поверхность, vaapidownload берет x-поверхность и выводит x-raw-yuv, а appsink потребляет абсолютно что угодно , не производя ничего другого (так что, похоже, ничего не делает). Попробуйте добавить в исходный файл YUV файл YUV4MPEG (.y4m):

gst-launch-0.10 -v filesrc location=/path/to/file.mp4 ! qtdemux ! vaapidecode ! vaapidownload | y4menc ! filesink location=decoded-video.y4m

Посмотрите, создает ли эта команда файл .y4m, а затем просмотрите это видео, используя VLC, MPlayer или ffplay, чтобы проверить правильность.

0 голосов
/ 16 марта 2012

Кажется, что vaapidownload нужно исправить, посмотрите https://bugzilla.gnome.org/show_bug.cgi?id=672106

Исправление должно быть здесь http://gitorious.org/~hkaelber/vaapi/hkaelbers-gstreamer-vaapi/commit/60b1781c7de58df7e87bb471a0fdb286f7451dcf

0 голосов
/ 15 марта 2012

Форматы в порядке.В противном случае это может привести к необъявленной ошибке или ошибке потока данных.Я подозреваю, что по какой-то причине поверхность не является "загружаемой".Если вы запустите GST_DEBUG = "*: 3" gst-launch .... или выше, журнал даст больше информации?

...