Активація підтримки відео в 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 з профілю поточного користувача.



Зайшовши в налаштування плагінів 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, вони активовані за замовчуванням, але мало.
Це дозволяє активувати плагін без бінарних патчів файлу, тому нові версії викладати не буду.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.