RReverser's

Ingvar Stepanyan

JavaScript developer, speaker and reverse engineer. D2D programmer. Sometimes human.


Играем H.264 в Opera

На написание этой статьи вдохновил костыль для Firefox, созданный Майкрософтом, который позволяет играть HTML5 Video в формате H.264 с помощью аддона Windows Media Player. Поковыряв расширение, было обнаружено, что там используется обычная замена всех <video>-тегов на странице на <object> с подстановкой пути до первого поддерживаемого видео с числа источников. В принципе подход не наилучший, но все же хоть что-то. Сразу же захотелось портировать скрипт под Оперу, но, конечно же, не обошлось без проблем.

Во-первых, Опера не больно-то дружит с <object>, поэтому скрипт был переделан под создание элемента <embed>. HTMLEmbedElement, в свою очередь, не хочет расширять свои стандартные функции, поэтому маппинг функций play, pause и т.д. пришлось убрать. В связи с этим простые примеры работают на ура, а любой javascript загибается при первой же попытке обратиться к ожидаемым функциям.

В связи с этим было принято решение найти другой плагин. Таковым оказался DivX Web Player. Этот аддон был создан собственно для этих же целей — замены <video>-тегов своим плеером, который, кстати, довольно удобный и имеет полную совместимость с функциями соотв. элемента HTML5. У них тоже был свой скрипт, причем с кучей условных ветвей для IE, FF, Chrome, Safari (Opera и в помине нет). Но, собственно говоря, реализация у нас практически готова и ее осталось допилить под два варианта плеера, что и было сделано. Также скрипт был оптимизирован и немного расширен в плане копирования аттрибутов заменяемого элемента.

Итак, собственно скрипт можно скачать здесь: userscripts.org/scripts/show/93628

Протестировать работу можно на странице DivX: labs.divx.com/html5/

В зависимости от значения параметра useDivX, вы увидите что-то наподобие:
  

Для установки рекомендую использовать UJS Manager, тогда параметр useDivX становится доступным в виде галочки в настройках. Лично я рекомендую использовать именно DivX-плеер (не из-за рекламы, к сожалению, мне они не платят:), а из-за его максимальной совместимости с HTML5 и ощутимой производительности по сравнению с Flash и WMP, у последнего мне даже буферизацию ждать надоедает).

Впрочем, скрипт есть, дальше дело за вами. С нетерпением жду баг-репортов)

comments powered by Disqus