LINUX.ORG.RU

Сломали поддержку h264

 


0

1

Заметил ,что с какого-то времени у меня перестали проигрываться html5 видео. Долго грешил на то что сменил видеокарту с амд на нвидию. Пересобирал библиотеки, менял настройки в хаотическом порядке. Потом решил попробовать firefox-bin и, о чудо, всё заработало. Первой мыслью было, что я его не так собрал, но проведя еще ряд проверок понял что дело в том что -bin версия была 45, а текущая 49.

Вот собственно вопрос, что сломали с 45й по 49ю версию в поддержке h264 и как это теперь починить? Сидеть до упора на старой версии не хочется. Да и как-то это не правильно.

//Использовать флеш - не предлагайте.

Нагуглил: «Firefox moved from gstreamer to ffmpeg. Make sure you have installed ffmpeg-libs.»

Но чем мне это может помочь - не понял, т.к. ffmpeg естественно установлен.

★★★★★

Последнее исправление: Loki13 (всего исправлений: 1)

Ответ на: комментарий от roman77

На что перейти я и сам если надо будет найду. Мне бы лису починить.

Не всем меня хромы-оперы устраивают. Вчера была очередная попытка перейти. Ни в опере, ни в хроме, так и не смог настроить даблклик на закрытие вкладки и открытие новой по даблклику по бару(в хромообразных окно сворачивает\разворачивает по такому клику). И это один из моментов, насчитать таких можно много ещё, где недостаток конфигурирования под себя по сравнению с лисой имеется.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 2)
Ответ на: комментарий от Loki13

Ты похоже гентушнек, но сломанный. Зайди в свою родную багрепортилку и прочитай как приличные люди с вопросами заходят. И да, УМВР.

hizel ★★★★★
()
Ответ на: комментарий от hizel

Так бинарная версия не работает 49я. Тут то что я гентушник никаким боком. Правда у меня начало появляться страшное подозрение что ему ffmpeg нужен 0.10 ветки. Алсо, нагуглил такую же проблему у красношапочников. Так что это не гентопроблема, я специально тег gentoo не стал ставить.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)

У тебя какой версии ffmpeg установлен? Если есть /usr/include/libavcodec/version.h, посмотри в нём LIBAVCODEC_VERSION_MAJOR. Ну и ещё LIBAVCODEC_VERSION_MINOR и LIBAVCODEC_VERSION_MICRO.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat
#define LIBAVCODEC_VERSION_MAJOR 56
#define LIBAVCODEC_VERSION_MINOR 60
#define LIBAVCODEC_VERSION_MICRO 100

Установлен 2.8.8, сейчас пробую 3.2 размаскировать и установить. Может ему и правда 57 нужен. ldd firefox ничего толком не говорит, он видимо подгружает динамически.

Loki13 ★★★★★
() автор топика

Устанавливаешь флеш плеер, устанавливаешь плагин-свитчер между HTML5 и Flash Player, включаешь VDPAU по руководству, включаешь dom.ipc.plugins.asyncdrawing.enabled в about:config. Опционально устанавливаешь плагин hal-flash. Видишь как всё просто?

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от Loki13

> ldd firefox ничего толком не говорит, он видимо подгружает динамически.

Попробуй strings firefog | grep lib

ZenitharChampion ★★★★★
()
Ответ на: комментарий от Loki13

Может ему и правда 57 нужен

В исходниках нет заголовков для 56-й версии. Для неё, похоже, используется 55-я. Но в ffmpeg всегда были различия и в минорных версиях, так что есть шанс, что ты на это наткнулся. Имеет смысл либо сбросить до 55-й, либо обновиться до 57-й.

он видимо подгружает динамически

Да. Он пытается последовательно загружать «libavcodec-ffmpeg.so.57», «libavcodec-ffmpeg.so.56», «libavcodec.so.57», «libavcodec.so.56», «libavcodec.so.55», «libavcodec.so.54», «libavcodec.so.53», пока не получится.

i-rinat ★★★★★
()

в моей ФаерФоксе хтмл5 работает, но не работает webrtc.

 ~ $ qlist -Iv ffmpeg
media-video/ffmpeg-3.2

Deleted
()
Последнее исправление: Lifun (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

устанавливаешь плагин hal-flash

Уж лучше тогда брать флеш из ChromeOS и использовать его через адаптер. Он будет использовать аппаратное ускорение вне зависимости от того, с каким wmode плагин на странице встроен, если конечно автор флеш-ролика озаботился поддержкой аппаратного ускорения. Плюс работающее 3d, минус поддержка печати.

i-rinat ★★★★★
()

А ffmpeg у тебя с поддержкой h264 собран? А то, емнип, например, в Debian он по умолчанию собирается без.

hippi90 ★★★★★
()
Ответ на: комментарий от i-rinat

Обновил ffmpeg до версии 3.2 и все заработало. Аппаратное декодирование правда не работает «Аппаратное декодирование H264 No», но это меня уже намного меньше волнует, чем совсем не работающее видео.

А почему может не работать аппаратное декодирование?

vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG4Simple            : VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    : VAEntrypointVLD
      VAProfileH264Baseline           : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD

vdpauinfo еще все лучше

MPEG1                           0 65536  4096  4096
MPEG2_SIMPLE                    3 65536  4096  4096
MPEG2_MAIN                      3 65536  4096  4096
H264_BASELINE                  41 65536  4096  4096
H264_MAIN                      41 65536  4096  4096
H264_HIGH                      41 65536  4096  4096
VC1_SIMPLE                      1  8190  2048  2048
VC1_MAIN                        2  8190  2048  2048
VC1_ADVANCED                    4  8190  2048  2048
MPEG4_PART2_SP                  3  8192  2048  2048
MPEG4_PART2_ASP                 5  8192  2048  2048
DIVX4_QMOBILE                   0  8192  2048  2048
DIVX4_MOBILE                    0  8192  2048  2048
DIVX4_HOME_THEATER              0  8192  2048  2048
DIVX4_HD_1080P                  0  8192  2048  2048
DIVX5_QMOBILE                   0  8192  2048  2048
DIVX5_MOBILE                    0  8192  2048  2048
DIVX5_HOME_THEATER              0  8192  2048  2048
DIVX5_HD_1080P                  0  8192  2048  2048
H264_CONSTRAINED_BASELINE      41 65536  4096  4096
H264_EXTENDED                  41 65536  4096  4096
H264_PROGRESSIVE_HIGH          41 65536  4096  4096
H264_CONSTRAINED_HIGH          41 65536  4096  4096
H264_HIGH_444_PREDICTIVE       41 65536  4096  4096
HEVC_MAIN                      153 262144  8192  8192
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---

Хотя это всё тема будет для отдельного топика, а тут

Всем спасибо!

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от Loki13

А почему может не работать аппаратное декодирование?

Потому что оно сейчас не реализовано в Firefox под Linux в принципе. Тут не та ситуация, как с Chromium, который нужно патчить, чтобы включить код для поддержки аппаратного декодера. В Firefox этого кода просто нет.

Затык сейчас в отрисовке через OpenGL. Пока она не будет включена по умолчанию, нет смысла делать аппаратное декодирование. Ибо придётся выкачивать картинку с GPU на CPU, на нём делать композицию, а потом выгружать обратно на GPU для отображения. Эти операции съедают всю выгоду от аппаратного ускорения.

i-rinat ★★★★★
()
Ответ на: комментарий от ZenitharChampion

С открытым драйвером radeon работает?

Это зависит от того, работает ли открытый драйвер radeon с GLX и OpenGL.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Спасибо. Тогда и искать не буду. Почему-то был уверен, что если ffmpeg умеет аппаратно декодировать, то и фокс по умолчанию будет делать это аппаратно, т.к. через него работает.

Loki13 ★★★★★
() автор топика
Ответ на: комментарий от Loki13

если ffmpeg умеет аппаратно декодировать, то и фокс по умолчанию будет делать это аппаратно, т.к. через него работает.

Аппаратное декодирование это довольно хитрая штука. Суть в том, чтобы снять часть работы с CPU. В GPU загружаются H.264 слайсы, он их декодирует в поверхности, которые либо связаны с текстурами, либо копируются в них. А уже этими текстурами рисуется квадрат на экране. В идеальном случае декодированное изображение не покидает GPU, поэтому API для работы с аппаратными декодерами в FFmpeg отличается. Там вместо готовых кадров, получаешь идентификаторы поверхностей. Что там программист с ними делает потом — уже не забота FFmpeg. Поэтому там существенные отличия.

С GStreamer можно было задействовать аппаратный декодер прозрачно для приложения, но для этого он забирал картинку на CPU, поэтому толку от такого декодера было мало. Разве что для лицензионно-чистой системы не нужна было делать отчисления за H.264 декодер — он был уже оплачен в составе GPU.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.