[Из песочницы] Активация поддержки видео в h264 на Firefox 49 на Windows XP

Почему Firefox никогда не поддерживал видео в h264 на Windows XP, или экскурс в историю

Сначала Mozilla отказывалась поддерживать проприетарный и защищённый патентами формат h264, продвигая использование открытых кодеков, потом, когда стало понятно, что без поддержки h264 в современном вебе никуда, реализовала её при при помощи компонента Windows Media Foundation, отсутствующего в Windows XP. Когда Cisco предоставила открытые и лицензионно чистые кодеки OpenH264, было слишком поздно — никто не хотел переписывать рабочий код, использующий WMF, ради ОС, поддержка производителем которой была окончена, и внедрение OpenH264 ограничили видео по WebRTC.

Но многие (в том числе и я) всё ещё используют эту ОС по разным причинам, и не стоит им отказывать в просмотре видео в h264 в самом лучшем (по моему скромному мнению) браузере Firefox.

Помощь, откуда не ждали


После обновления на Firefox 48 я внезапно для себя обнаружил, что видео в h264 прекрасно работает.
Небольшое расследование привело меня к тому, что это стало возможно благодаря плагину Adobe Primetime, ориентированному на воспроизведение DRM видео.

На скриншоте ниже, полученном при помощи Process Explorer, видно, что процесс plugin-container, появившийся после загрузки страницы с видео, использует файл eme-adobe.dll из профиля текущего пользователя.

dc5c706922597aa9df136fc194f9a889.png

Зайдя в настройку плагинов Firefox, я нашёл там Adobe Primetime, отключение которого приводило к тому, что FF переставал воспроизводить h264, что доказывало, что именно он виновник этого торжества.
Но радость моя была не долгой.

Всё опять сломали


При очередном обновлении до Firefox 49 я с грустью обнаружил, что h264 опять не играется. Я не нашёл Adobe Primetime в списке плагинов, я не нашёл его файлов в профиле, а попытка их подсунуть ни к чему не привела.

В поисках по интернету я наткнулся на обсуждение предложения по скрытию Adobe Primetime на ОС ниже Vista. Оттуда я узнал, что этот плагин официально не поддерживает Windows XP, и на некоторых конфигурациях наблюдались проблемы со стабильностью. Но у меня же проблем не было!

В багтрекере была ссылка на «исправление» проблемы отображения плагина Primetime на XP. Опираясь на код из него, я сделал исправление, которое откатывает вредный эффект данных изменений.

Исправление


Обновление: более простой и корректный способ указан в P.S, файлы править не нужно. Предыдущий вариант исправления остаётся в исторических целях.
Необходимо разархивировать файл omni.ja из корневой директории браузера, найти там файл /jsloader/resource/gre/modules/GMPUtils.jsm, открыть в любом шестнадцатеричном редакторе, и заменить там байты
6973506C6174666F726D416E6456657273696F6E41744C656173740700000077696E0300000036

на
6973506C6174666F726D416E6456657273696F6E41744C656173740700000077696E0300000035

Тем самым мы включим работу плагина на ядре NT 5.0 и выше, вместо NT 6.0. После исправления необходимо упаковать файлы обратно в omni.ja. Архивация с обычными параметрами тут не подойдёт, нужно использовать консоль:
zip -qr9XD omni.ja *

После замены им оригинала всё опять заработало.

Замечу, что необходимо так же активировать поддержку воспроизведения видео при помощи плагинов, в about: config необходимо выставить в true:

media.gmp.decoder.enabled

У меня эта настройка была давно включена, в надежде на работу h264 через OpenH264. После этого можно наслаждаться видео в h264 на любых сайтах, в том числе YouTube, Vimeo, сервисах онлайн-трансляций и т.д.

image
(тест на чистой ОС в виртуальной машине)

Я создал запрос в Bugzilla на возврат поддержки плагина Primetime на Windows XP, но что-то мне подсказывает, что это закончится ничем.
Предлагаю помочь в исправлении описания запроса, так как я косноязычен даже на русском языке (если вы не заметили), а уж на английском понятность моих пояснений полностью теряется, что ещё более снижает шансы на официальное исправление этой проблемы в будущих версиях Firefox.

Послесловие


Для тех, кому лень возиться с HEX- редакторами и архиватором, прикладываю ссылку на каталог на Яндекс.диске, куда я буду сбрасывать свои исправленные файлы omni.ja после обновлений. Пока там лежит один файл из актуальной версии.
Замечание для параноиков (коим являюсь я сам)
Плагины в Firefox запускаются в изолированном процессе, не имеющим доступ к странице, поэтому ничего страшного в использовании плагина с закрытым кодом нет. Хоть я и предлагаю скачать исправленный файл, я также даю инструкции по его самостоятельному исправлению выше.

Получившийся у вас файл omni.ja при бинарном сравнении может отличатся от моего даже на одной версии FF, так как используются разные архиваторы, его версии и параметры сжатия по умолчанию.


Спасибо за внимание!

P.S. Обновление


На Bugzilla подсказали более простой и корректный способ активации плагина. Достаточно создать в about: config настройку
media.gmp-eme-adobe.forceSupported

И выставить её в true. Так же необходимо выставить в true уже существующий параметр media.gmp.decoder.enabled, и проверить на всякий случай параметры media.gmp-eme-adobe.visible и media.gmp-eme-adobe.enabled, они активированы по умолчанию, но мало ли.
Это позволяет активировать плагин без бинарных патчей файла, поэтому новые версии выкладывать не буду.

Комментарии (12)

  • 3 октября 2016 в 20:11

    +3

    > Но многие (в том числе и я) всё ещё используют эту ОС
    Как оно там в 2006?
    • 3 октября 2016 в 21:42 (комментарий был изменён)

      0

      Я в 2016, всё отлично!
      Это просто личный выбор, ничего более. Статья преследовала цель дать информацию людям об активации возможности декодирования h264 на XP, и не преследовала целью начать обсуждение о нужности или ненужности данной ОС.
  • 3 октября 2016 в 20:32

    +4

    Быть параноиком на XP — это сильно!

    • 3 октября 2016 в 21:45

      0

      Кстати, да, самая несекьюрная система же!
    • 3 октября 2016 в 21:49

      0

      На XP дырки, на десятке телеметрия- податься виндоюзеру-параноику некуда)
      Впрочем, при должной настройке и на XP безопасно, запуск кода ограничен политиками безопасности, запись в системные каталоги невозможна для ограниченного пользователя, а EMET защищает от эксплуатации популярных уязвимостей.
  • 3 октября 2016 в 20:48

    +2

    Не хватает тега «прикладная некрофилия».
  • 3 октября 2016 в 20:53

    0

    И эти люди ноют по форумам, что их смартфон не обновлялся до 7 версии чего бы то ни было и вендор мобилы их обманул?
  • 3 октября 2016 в 21:14

    0

    Установка значений


    media.gmp-eme-adobe.visible = true
    media.gmp-eme-adobe.enabled = true
    media.gmp.decoder.enabled = true

    помогла?

    • 3 октября 2016 в 21:43

      0

      См. Обновление в статье. Необходим ещё один параметр, эти не позволяют активировать плагин на XP, хотя они всё равно нужны.
  • 3 октября 2016 в 21:44

    0

    Для технофилов а-ля «гыгы, они сидят на XP»: Например есть старый ноут, драйвера под который есть на линукс и на XP. Что на нем и стоит в итоге))
    • 3 октября 2016 в 21:53

      0

      Можно понять, но есть ещё вопрос практической пригодности такой техники для прикладных задач в 2016.
  • 3 октября 2016 в 21:52

    0

    Статья обновлена, бинарный патч теперь не нужен, плагин можно активировать через настройку в about: config.

© Habrahabr.ru