Автор Тема: Аппаратное ускорение видео в midori  (Прочитано 1571 раз)

Оффлайн rygoravich

Наткнулся на такую инфу - браузер midori использует gstreamer для html5 видео. А gstreamer по идее умеет vdpau - соответственно, взялся экспериментировать. На обычном компе в принципе так все гладко и происходит, на апельсине - не получилось.

Итак, имеется система с armbian 5.10 (pi pc), поставил midori из jessie-backports, запускаю из терминала, включаю сайт с видео - тормозит. В консоль вываливает следующее:
Извините, вам запрещён просмотр содержимого спойлеров.

Решил проверить другое приложение, работающее через gstreamer. Для экспериментов выбрал parole (собственно, от балды загуглил "медиаплеер gstreamer" - что первое на глаза попалось). Он доустановил gstreamer0.1 (до этого в системе был gstreamer1), не знаю, насколько это принципиально. При попытке открытия им видеофайла выводит окно под заголовком "Ошибка драйвера GStreamer" с текстом "Настроенный videosink video не работает." и кнопой "закрыть", воспроизводить отказывается.

В общем, есть тут люди, разбирающиеся в тонкостях gstreamer - можете что-нибудь посоветовать? Очень уж хочется аппаратного ускорения в браузере...

Оффлайн Lipton

Re: Аппаратное ускорение видео в midori
« Ответ #1 : Июнь 02, 2016, 02:30:43 pm »
В общем поставил я gstreamer с прослойкой vdpau-vaapi
Извините, вам запрещён просмотр содержимого спойлеров.


midori по моему его не подхватил, вечером посмотрю что к чему и скорее всего я буду экспериментировать с qupzilla а не midori. Проблема вся в том что я с работы мучаю видео через x11vnc, а он в любом случае не покажет видео которое выводится в отдельное устройство (vdpau), так что вечером отпишусь о результатах.
« Последнее редактирование: Июнь 02, 2016, 02:32:17 pm от Lipton »

Оффлайн rygoravich

Re: Аппаратное ускорение видео в midori
« Ответ #2 : Июнь 03, 2016, 04:35:21 am »
Lipton, большое спасибо за надежду, когда я уже готов был забить на десктопное применение :) ! Нутром чую, что мы близко, мы очень близко...

Итак, проанализировав ваш пост я обнаружил у себя (armbian) ошибку в va-api: оно не работало, т.к. пыталось использовать в качестве драйвера несуществующий файл /usr/lib/arm-linux-gnueabihf/dri/lima_drv_video.so. После долгого гуглежа и тщетных попыток выяснить, что это за Лима такая и как бы заставить libva забыть о ней в пользу vdpau_drv_video.so наконец догадался просмотреть, а что, собственно в том каталоге лежало... Выяснилось, что кроме собственно vdpau_drv_video.so еще куча симлинков на него. Забил на причины и создал симлинк с требуемым именем - va-api заработал:

Извините, вам запрещён просмотр содержимого спойлеров.

Запустил midori, штука глючная и падучая, однако - он доложил, что vdpau используется :) . Правда, пришлось ему поверить на слово, т.к. видео я все равно не увидел. Оптимизм внушает тот факт, что увиденная полосатая каша очень сильно смахивает на попытку просмотра видео через mplayer с использованием vdpau. Собственно, лирическое отступление - у меня нормально показывает видео mpv, однако mplayer выдает что-то полосато-неразборчивое, раньше разбираться с этим не пробовал (таки одного плеера, пусть и не самого удобного, хватает).

Кстати, обнаружил, что iceweasel (firefox) тоже стал показывать ту же хрень, что наводит на мысль, что если доступен vdpau через gstreamer, то он будет задействован и там (что уже само по себе просто замечательно, ввиду падучести midori).

Собственно, в моем случае пока остался нерешенным вопрос - почему на armbian mpv показывает через vdpau нормально, а mplayer - нет? Вопрос ко всем - у вас та же ситуация или это свойство конкретно моей системы? Если мой случай не уникален - удалось кому-нибудь это решить?

Вывод mplayer при попытке воспроизведения видео:

Извините, вам запрещён просмотр содержимого спойлеров.

У меня сильные подозрения касательно строки "[vdpau] Failed to get display FPS"... Кто-нибудь может что-нибудь подсказать?
« Последнее редактирование: Июнь 03, 2016, 04:37:33 am от rygoravich »

Оффлайн Lipton

Re: Аппаратное ускорение видео в midori
« Ответ #3 : Июнь 03, 2016, 09:21:33 am »
rygoravich, К сожалению у меня пока нет хороших новостей. В мидори тытруба показывает что то типа "невозможно воспроизвести видео", купзилла показала черные квадраты, фаерфокс в убунте 15.10 собран без поддержки жистриммера (((. Думаю нам стоит попробовать распбиан, т.к. тут человек заводил жистриммер на банане. С другой стороны у нас он вроде как тоже выдает в консоли нужный результат... У вас видео воспроизводит вот так?
gst-launch-1.0 filesrc location=my-video.mp4 ! qtdemux ! vaapidecode ! vaapisink fullscreen=true

Еще думаю вам стоит попробовать пересобрать vdpau, т.к. у меня mplayer видео воспроизводит нормально.
ЗЫ: Надо больше экспериментаторов и энтузиастов, тогда результат будет более удачный.

Оффлайн rygoravich

Re: Аппаратное ускорение видео в midori
« Ответ #4 : Июнь 05, 2016, 10:05:04 am »
В общем, выяснилось, что mplayer'у конкретный файл не понравился (хотя у mpv с ним проблем не было), на котором я опыты ставил - там запись с dvb-s, mpeg2 720*568 в контейнере mkv. Взял обычный h264/mp4 с ютуба - mplayer показывает нормально. Gstreamer в браузере выводит какую-то кашу, в консоль пишет, что все хорошо, vdpau используется:

libva info: VA-API version 0.36.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/arm-linux-gnueabihf/dri/lima_drv_video.so
libva info: Found init function __vaDriverInit_0_35
[VDPAU SUNXI] VE version 0x1680 opened
[VDPAU SUNXI] OSD disabled!
libva info: va_openDriver() returns 0

Команда, предложенная в предыдущем посте не работает - вот что выводит:
$ gst-launch-1.0 filesrc location=cat.mp4 ! qtdemux ! vaapidecode ! vaapisink
libva info: VA-API version 0.36.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/arm-linux-gnueabihf/dri/lima_drv_video.so
libva info: Found init function __vaDriverInit_0_35
[VDPAU SUNXI] VE version 0x1680 opened
[VDPAU SUNXI] OSD disabled!
libva info: va_openDriver() returns 0
Установка конвейера в состояние PAUSED…
Подготовка конвейера (PREROLL)…
Получен контекст из элемента «vaapidecode0»: gst.vaapi.Display=context, display=(GstVaapiDisplay)NULL;
ОШИБКА: из элемента /GstPipeline:pipeline0/GstQTDemux:qtdemux0: Обнаружена общая ошибка потока GStreamer.
Дополнительная отладочная информация:
qtdemux.c(4434): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux0:
streaming stopped, reason not-negotiated
ОШИБКА: конвейер не хочет подготавливаться (PREROLL).
Установка конвейера в состояние NULL…
Освобождение конвейера…
$

Впрочем, на обычном компе с дебианом она тоже не работает, причем сообщение такое же.

Оффлайн rygoravich

Re: Аппаратное ускорение видео в midori
« Ответ #5 : Июнь 05, 2016, 10:31:49 am »
Поковырялся в гугле в попытках понять, как gst-launch-1.0 в принципе работать должен, так вот - а при чем тут вообще qtdemux? Вроде бы (к сожалению, на русском языке инфы мало) это демультиплексор для контейнера quicktime - я уже лет 10 забыл, что такой существует... Или он для контейнера mp4 тоже в принципе годится? Если да - то можно ли заменить его на другой демультиплексор?

Оффлайн Lipton

Re: Аппаратное ускорение видео в midori
« Ответ #6 : Июнь 06, 2016, 11:45:46 am »
После долгого гуглежа и тщетных попыток выяснить, что это за Лима такая и как бы заставить libva забыть о ней в пользу vdpau_drv_video.so наконец догадался просмотреть, а что, собственно в том каталоге лежало... Выяснилось, что кроме собственно vdpau_drv_video.so еще куча симлинков на него. Забил на причины и создал симлинк с требуемым именем - va-api заработал:
Перечитал сообщение, с этим все просто:
export LIBVA_DRIVER_NAME=vdpau
А вот запуск
gst-launch-1.0 filesrc location=big_buck_bunny_720p_H264_AAC_25fps_3400K_short.MP4 ! qtdemux ! vaapidecode ! vaapisink
у меня вылетает с другой ошибкой: а не, с такой же...
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'vdpau'
libva info: Trying to open /usr/lib/arm-linux-gnueabihf/dri/vdpau_drv_video.so
libva info: Found init function __vaDriverInit_0_37
[VDPAU SUNXI] VE version 0x1680 opened.
libva info: va_openDriver() returns 0
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'vaapidecode0': gst.vaapi.Display=context, display=(GstVaapiDisplay)NULL;
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: GStreamer encountered a general stream error.
Additional debug info:
qtdemux.c(5319): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux0:
streaming stopped, reason not-linked
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
« Последнее редактирование: Июнь 06, 2016, 11:48:23 am от Lipton »

Оффлайн rygoravich

Re: Аппаратное ускорение видео в midori
« Ответ #7 : Июнь 10, 2016, 08:00:46 am »
Продолжил копать под гстример - по мере возможности, ибо ни***чего не понимаю, как он устроен. Методом "а если его палочкой с этой стороны ткнуть?"...

Итак, поставил totem и gst123 - оба используют gstreamer1.0. Ставил и на пипиську (armbian - ну, это почти совсем debian) и на свой рабочий писюк (совсем debian под amd64). На втором тотем завелся без вопросов, gst123 не завелся, пишет в консоль ерунду всякую. На апельсине тотем заявил следующее:

$ totem cat.mp4 

** (totem:14933): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files

(totem:14933): Clutter-CRITICAL **: Unable to initialize Clutter: Failed to connected to any renderer due to constraints

(totem:14933): Totem-WARNING **: gtk-clutter failed to initialise, expect problems from here on.

(totem:14933): GLib-GObject-CRITICAL **: g_object_class_install_properties: assertion 'PARAM_SPEC_PARAM_ID (pspec) == 0' failed

(totem:14933): Clutter-CRITICAL **: Unable to initialize Clutter: Failed to connected to any renderer due to constraints

(totem:14933): GLib-GObject-CRITICAL **: g_object_class_install_properties: assertion 'PARAM_SPEC_PARAM_ID (pspec) == 0' failed

(totem:14933): GLib-GObject-WARNING **: g_object_set_property: object class 'ClutterStage' has no property named 'background-color'
Ошибка сегментирования
$

Здесь первый варнинг удалось изничтожить установкой пакета at-spi2-core. А вот начиная от Clutter-CRITICAL - проблема... Есть идеи, как можно инициализировать этот самый клуттер :) ?