Почему 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 из профиля текущего пользователя.



Зайдя в настройку плагинов 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, они активированы по умолчанию, но мало ли. Это позволяет активировать плагин без бинарных патчей файла, поэтому новые версии выкладывать не буду.
Поделиться с друзьями
-->

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


  1. aulandsdalen
    03.10.2016 20:11
    +3

    > Но многие (в том числе и я) всё ещё используют эту ОС
    Как оно там в 2006?


    1. sumanai
      03.10.2016 21:42
      +5

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


      1. satter
        06.10.2016 16:10

        на скринште у вас i5 Ivy Bridge, XP адекватно работает на таком железе? нет проблем с драйверами?


        1. sumanai
          06.10.2016 16:11

          Интел пожмотилась на драйвера на USB 3.0, работает на стандартных как 2.0, с остальным всё отлично.


    1. Jeditobe
      03.10.2016 22:24
      +4

      Все норм, активация без смс!


      1. aulandsdalen
        03.10.2016 22:26
        +3

        Вы не предложили скачать реактос. Вы точно Jeditobe?


        1. Jeditobe
          03.10.2016 22:51
          +3


  1. nazarpc
    03.10.2016 20:32
    +14

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


    1. VioletGiraffe
      03.10.2016 21:45

      Кстати, да, самая несекьюрная система же!


      1. Louter
        04.10.2016 11:28
        -1

        Как бы стоит почти во всех банкоматах. Приятного пополнения счёта =3
        А вообще защищённость ОС из коробки и возможности по её защите встроенными средствами это разные стороны слова «несекьюрная» или «секьюрная». И если ХР можно настроить в защищённый режим (правда тормозит, настраивать с неделю если не больше), то все последующие не знаю возможно ли в принципе. (для ХР есть толмут как настроить её в безопасный режим)


    1. sumanai
      03.10.2016 21:49
      +2

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


      1. dartraiden
        04.10.2016 09:51

        Телеметрию (если не рассматривать вариант «спиратить Enterprise и отключить её полностью») можно порезать соответствующими правилами в hosts или прямо на маршрутизаторе (есть уже готовые обновляемые подписки), а вот самостоятельно залатать уязвимости в закрытом коде труднее.


      1. Louter
        04.10.2016 11:24

        Самая базовая дыра это RPC в списке сервисов. Вырубив её закрывается достаточно много дыр, но если память не изменяет, не работает RDP в таком режиме.


      1. zooks
        04.10.2016 15:33

        На Linux — там и Firefox есть и много всего другого.


    1. The_STIFFLER
      04.10.2016 15:33
      +2

      У меня куча знакомых все еще сидят на XP и это их не парит вообще, система стабильна, все чем они пользуются там имеется, в современные игры никто не играет. В общем то вот))


  1. hdfan2
    03.10.2016 20:48
    +12

    Не хватает тега «прикладная некрофилия».


    1. AndrewLabs
      05.10.2016 05:04
      +1

      XP FOREVER. А если серьёзно… А Вы не думали, что XP — это по истине самый удачный продукт MS? Что дали системе все современные средства защиты вроде DEP и ASLR? Что дали все эти хитроумные трюки по запутыванию кода ядра? С точки зрения безопасности — ничего. Вирусы как были — так и есть. RCE как было, так и есть. А вот на порядок усложнённое программирование и невозможность нормального вмешательства в работу ядра — это да, появилось. И теперь ещё сложнее, если не невозможно, определять какие-то непонятные потоки в системе, виснуть на ключевые точки в ядре. К тому же ОС разрослась на столько, что одному человеку объять её умом сложновато становится.

      Вот что лично Вам даёт NT версии старше 5? Что вообще по хорошему надо программисту? Мультизадачность, сокеты, файловую систему. GUI. А вот так нужный всем FUSE MS значит решила не делать? Или drive read only, что было бы крайне полезно на SDD с кучей мелких файлов, на которых десятка любезно постоянно меняет даты последнего открытия файла, убивая SDD на ровном месте.

      XP просто благодаря своей изученности позволяет контролировать куда больше, настраивать куда больше. Писать более интересные драйвера. А если бы MS ещё раскрыли более-менее её потенциал, убрали бы ограничение в 4 Гб на x86 версии — то система бы ещё жила и жила.


  1. sashabeep
    03.10.2016 20:53
    +1

    И эти люди ноют по форумам, что их смартфон не обновлялся до 7 версии чего бы то ни было и вендор мобилы их обманул?


    1. sleeply4cat
      03.10.2016 22:16
      +1

      Имеем право.


  1. Grief
    03.10.2016 21:14

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


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

    помогла?


    1. sumanai
      03.10.2016 21:43

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


  1. ogoNEKto
    03.10.2016 21:44

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


    1. VioletGiraffe
      03.10.2016 21:53
      +1

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


      1. sleeply4cat
        03.10.2016 22:18

        У меня файлопомойка с 4 пнём и DDR1, например. Любая графическая оболочка современного линукса лагает просто неистово.
        Зачем, впрочем, на ней нужен флэш — вопрос отдельный


        1. sashabeep
          03.10.2016 22:19
          +6

          А зачем вообще файлопомойке гуй?


          1. sleeply4cat
            03.10.2016 22:23
            -1

            Не знаю :)
            Лишний монитор есть — почему бы и не поставить?


        1. monster2106
          04.10.2016 05:06
          +2

          Даже XFCE?


        1. 3aicheg
          04.10.2016 05:06

          У меня есть пара старых TabletPC, один на атоме, а второй на, прости осспаде, процессоре Transmeta Crusoe. На тот, что на атоме, я когда-то успешно ставил Windows 7, но тормозило и ело слишком много гигабайт не самого большого харда — откатился на ХП. Периодически использую девайсы, обычно для чтения доков с мануалами, когда сломаю основной компьютер чем-то типа установки генту. Учитывая, сколько развелось е… в смысле, стильно-молодёжных людей, постящих инструкции исключительно в виде видео на ютубе, флэш и видео бывают вполне актуальны. Видео, правда, даже атом уже тянет с трудом, на Crusoe лучше не пробовать даже. Иногда еще бывает нужно что-нибудь нарисовать — конечно, поседеешь и посинеешь, пока дождёшься загрузки гимпа на этом доисторическом навозе мамонта, но рисование пером прямо по экрану всё искупает, даже с учётом лагов!

          Можно спросить, конечно, зачем так себя мучить, не лучше ли перестать жмотиться и купить уже нормальный ноутбук. Но ведь и эти всё равно выкидывать жалко!!! Да и цена на виндовые трансформеры со стилусами какая-то негуманная, учитывая, что использоваться оно будет пару раз в году, по случаю.


          1. sumanai
            04.10.2016 05:15

            Видео, правда, даже атом уже тянет с трудом, на Crusoe лучше не пробовать даже.

            К сожалению, описанное мною решение, судя по всему, не использует аппаратное ускорение для декодирования. Просмотр видео на ютубе может кушать до 20% моего ЦПУ.


      1. MacIn
        04.10.2016 15:11

        Обычная разработка. Среды, базы данных, окружение. Работает без нареканий.


    1. sashabeep
      03.10.2016 22:19

      Что же там такого сверхъестественного и нужного из неработающего? COM-порт?


  1. sumanai
    03.10.2016 21:52

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


  1. V1tol
    03.10.2016 22:30
    +3

    Интересный у вас конфиг — Ivy Bridge, 1GB ОЗУ и Windows XP… В виртуальной машине видео смотрите?


    1. sumanai
      03.10.2016 22:35

      Мой FireFox за годы работы основательно настроен, затвикан, стоит почти три десятка расширений, и я не был уверен, что приведённых мною настроек было достаточно. Мало ли, что я ещё мог поменять. Поэтому и нужен был тест на чистой виртуальной машине, что и указано под изображением в скобочках.
      А конфиг у меня вполне сбалансирован, разве что ОП вышло больно много (24ГБ и х64 версия XP), но так вышло.


      1. loltrol
        04.10.2016 05:06

        довольно любопытно, xp x64...:) Давненько, еще до выхода windows 8.1 сам сидел на ней, но с развитием vga passthrough пересел на windows 10 в kvm виртуалке, в которой есть доступ только к интернету(через vpn :) ), на windows установлен steam с карточкой, привязанной виртуальной карточкой. Пускай себе следит :)


        1. sumanai
          04.10.2016 05:13

          vga passthrough

          К сожалению, это требует специфического оборудования. Моё железо, купленное с расчётом «Дёшево и сердито», его не поддерживает, а менять платформу слишком дорого выходит.


      1. navion
        04.10.2016 14:55

        Я просто копирую папку FF из %appdata%, уже пару компов так сменил.


        1. wull
          04.10.2016 20:29

          Облегчите себе жизнь как я, в ярлыке —
          «путь\Mozilla Firefox\firefox.exe» -profile «путь\Mozilla Firefox\prof»
          папка prof сама создается при запуске и папки профиля все там же в аппдата остаются лишь папки краш и апдейтов но что то подсказывает мне что у вас линукс


          1. navion
            04.10.2016 23:24

            Сомнительное улучшение — забыл вставить путь в ярлыке и остался без профиля. А в AppData всё равно куча других настроек, которые надо бекапить и переносить.


            1. wull
              05.10.2016 10:03

              Не совсем понял, даже если запустить с default ярлыком то всего лишь в AppData создастся новый профиль, у меня на диске D файрфокс и в нем же папка профиля и там же на диске D все ярлыки программ


  1. Wedmer
    04.10.2016 02:54

    Сразу вспомнилось это видео.


  1. atemik
    04.10.2016 05:06

    А можно озвучить причину кроме «не нравится» для использования XP в 2016?

    PS: про телеметрию и прочую паранойю прочитал.


    1. sumanai
      04.10.2016 05:14
      +1

      А что, требуются какие-то ещё причины, кроме желания пользователя?


    1. 3aicheg
      04.10.2016 05:26
      +4

      «Всё, что надо, работает, зачем что-то менять?»
      Вдруг человеку для счастья не хватало только h264?


      1. sumanai
        04.10.2016 18:19

        Именно так, практически. Это одна из тех немногих вещей, которая меня реально расстраивала.


    1. AlexSmall
      04.10.2016 09:19

      Например сканер тойоты (старая версия), орингинально ставится на ХР таблет. Зачем чтото менять?


    1. navion
      04.10.2016 14:57
      +1

  1. dartraiden
    04.10.2016 09:47
    +3

    После исправления необходимо упаковать файлы обратно в omni.ja.

    Не надо так. Даже, если бы вам не подсказали нужную настройку в about:config, изменять ресурсы — плохая идея, после каждого обновления браузера операцию придётся повторять.

    Интересную реализацию я углядел здесь: http://www.ghacks.net/2016/08/14/override-firefox-add-on-signing-requirement/
    вместо изменения .jsm в ресурсах мы заставляем браузер при запуске выполнять наш js-код, который вносит необходимые изменения «на лету», не трогая файлы на диске.


    1. sumanai
      04.10.2016 15:31

      Спасибо, возьму на заметку.


  1. Ivan_83
    04.10.2016 20:11
    +2

    Хз чего все накинулись на автора из за ХР.
    Не менйстрёмово как вин 10, а автору норм. Так же вероятно что у него есть какой то софт/дрова который уже в семёрке не пашет. А может просто ему так удобнее.

    У папы есть живой ноут с п4 селерон и 512 оперативы, ХР там более чем комфортно, а семёрка будет только тормозить, если вообще получится поставить и дрова найти.
    Если бы мой EEEPC не сдох то с ним было бы тоже самое.
    В одной организации по одной из программ МС досталась куча софта почти за даром, больше половины компов там было уровня п4 селерон 1800, 1гб озу, мх400 видюха — это всё прекрасно летало в ХР даже загаженых но с лицензионной семёркой даже после отключения не нужного оно работало так себе, я уж молчу что дров под семёрку на такое старое видео не было, и интел кинул с дровами даже пользователей матерей на 9хх чипсетах где была не плохая встройка.

    Касательно венды — я вообще не понимаю к чему в быту эти заморочки с ХР, вин 7, вин 10 когда есть 2003, 2008р1 и теперь 2016 — прикол то в том, что проблем там как юзерам так и юзерам которые не хотят платить на порядки меньше: туда не ставят всякий мусор против активаторов в апдейтах, всякие принуждаторы к апдейту, не отключают никаких возможностей. При этом игры и почти всё остальное ПО там работают также.
    Или вот апдейты — у 2к3 они кончились только в начале этого года, а юзера ХР уже давно без них. (я в курсе про WePOS, но их там на порядок меньше обычного)

    Помню как проводник, «управление компьютером» и диалог сохранения файла стали сильно хуже в семёрке, встроенная служба для бесперебойников АПЦ исчезла, памяти система стала жрать больше (ХР жрала 100 мегов оперативы после бута, семёрка от 600), а вот сказать что стало лучше затрудняюсь.
    Из причин перехода с 2к3х64 помню только что винт уже пора было апгрейдить (те систему переставлять в любом случае) и желание не терять связь с пользователями которых иногда супортю.


    1. Wedmer
      05.10.2016 17:51

      В WinXP вполне было комфортно даже на Pentium 200MMX с 256MB оперативки. Правда после сервис пака винда стала жрать больше ресурсов, пришлось откатиться на W2k.


  1. smes
    05.10.2016 05:13
    +1

    Английский вроде знаем, но гуглом пользоваться не умеем?
    http://www.msfn.org/board/topic/175591-enable-mp4-h264-aac-html5-video-in-firefox-on-windows-xp-without-flash/


    1. sumanai
      05.10.2016 05:15

      Я гуглил множество раз до этого, в том числе и на английском, но ничего не находил. В конце концов я забил на гуглинг, потеряв надежду найти что-нибудь стоящее.
      Хоть я и изобрёл велосипед, зато мой пост первый на русском, а не все умеют искать на английском.


      1. smes
        05.10.2016 11:52

        Я про что и говорю, что трудности с гуглом.
        firefox h264 ^windows xp"
        firefox mp4 «windows xp»
        firefox html5 «windows xp»
        По каждому поиску, ссылка на первой же странице.

        Тот же результат, кстати, с Яндексом.

        И по поводу собственно русского языка:
        https://forum.mozilla-russia.org/viewtopic.php?id=69941
        Там правда модератор медлит правкой, но есть ссылка на первоисточник, где инфа давно обновлена.
        http://aresh.livejournal.com/488824.html
        http://aresh.livejournal.com/495544.html
        https://2ch.hk/s/arch/2016-08-12/res/1782796.html

        Так что без всякого сомнения не было необходимости тратить на это столько усилий. Хоть статья и в общем неплохая.


        1. sumanai
          05.10.2016 16:10

          Просто когда я гуглил, этого плагина не было вообще ))


          1. smes
            05.10.2016 18:05

            Да, да, я не я, и лошадь не моя :-) Не, ну в общем ради бога, чем больше таких статей, тем лучше, просто для меня было странно увидеть презентацию всего этого как большого открытия.


            1. smes
              05.10.2016 18:34

              В любом случае, тебе и наверно еще многим повезло, что Chris Pearce не сумел добиться своего и этот плагин все-таки временно вышел из тени в FF 48.