[Из песочницы] Активация поддержки видео в h264 на Firefox 49 на 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 из профиля текущего пользователя.
Зайдя в настройку плагинов 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, сервисах онлайн-трансляций и т.д.
(тест на чистой ОС в виртуальной машине)
Я создал запрос в Bugzilla на возврат поддержки плагина Primetime на Windows XP, но что-то мне подсказывает, что это закончится ничем.
Предлагаю помочь в исправлении описания запроса, так как я косноязычен даже на русском языке (если вы не заметили), а уж на английском понятность моих пояснений полностью теряется, что ещё более снижает шансы на официальное исправление этой проблемы в будущих версиях Firefox.
Послесловие
Для тех, кому лень возиться с HEX- редакторами и архиватором, прикладываю ссылку на каталог на Яндекс.диске, куда я буду сбрасывать свои исправленные файлы omni.ja после обновлений. Пока там лежит один файл из актуальной версии.
Получившийся у вас файл 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.