Какой набор инструментов вы можете порекомендовать для написания собственного мультимедийного плеера, встроенного в веб-браузер? - PullRequest
1 голос
/ 06 октября 2011

Я собираюсь написать собственный мультимедийный плеер.Он будет встроен в веб-браузер и будет получать данные с сервера через SSL-соединение.

Требуемые функциональные возможности:

  • MPEG4-видео и различное декодирование аудио VoIP (например, G.711 или G.729)
  • пользовательские элементы управления
  • представление формы сигнала (или просто гибкий API рисования)

Я думаю о Adobe Flash (или Flex).Но я мало знаю об этой технологии.Больше всего меня беспокоит мультимедийное декодирование.

Можете ли вы порекомендовать Adobe Flex или что-нибудь еще для этого проекта?Какие подводные камни можно ожидать на этом пути?

РЕДАКТИРОВАТЬ:

Flash Player не поддерживает аудиокодеки MPEG4 или VoIP.Поэтому для использования Flash мне нужно настроить сервер потоковой передачи мультимедиа и транскодировать мои медиафайлы в поддерживаемые форматы (H.264 / AAC).Это гораздо более дорогое решение, чем я ожидал.

Какие альтернативы мне следует рассмотреть?Java-апплет?ActiveX?Windows Media Player?

Ответы [ 3 ]

5 голосов
/ 08 октября 2011

Ну, вы могли бы сделать это, используя Silverlight; Silverlight имеет интерфейсы, которые позволяют вам передавать необработанные кадры H.264 и отображать их. На самом деле, потоковый видеоплеер Netflix написан в Silverlight. Если это сработает, это может быть вашим лучшим выбором.

Если это не сработает, а Flash не сделает этого, то вы можете попробовать java (не знаю достаточно, чтобы знать, выполнимо ли это или нет, но я предполагаю, что отсутствие java на многие клиентские машины будут барьером) или напишите свой собственный плагин / элемент управления activex.

Основная проблема с элементом управления ActiveX, помимо сложной кривой обучения, заключается в том, что вам необходимо каким-то образом установить его на клиентских компьютерах. Это еще сложнее, когда вы говорите о медиаплеере, потому что тогда вам, вероятно, придется иметь дело с драйверами звука и рендерингом видео; для рендеринга видео высокого качества вы захотите использовать аппаратное ускорение, которое означает directx и / или opengl, при условии, что вы ориентируетесь на окна. Кроме того, элемент управления ActiveX работает только в IE, а не в других веб-браузерах.

Однако, если вы решите пойти по маршруту плагин / activex, я настоятельно рекомендую вам посмотреть FireBreath ; FireBreath - это фреймворк и абстракция плагинов для браузеров для написания кросс-платформенных и кросс-браузерных плагинов. Flash и Silverlight сами по себе являются элементами управления activex и плагинами npapi, и я знаю как минимум два медиапроигрывателя, написанных специально для FireBreath. Это будет самый простой способ подойти к проблеме с точки зрения плагина, но вам придется использовать C ++. не поймите меня неправильно - это не простая задача, даже с FireBreath, но, по крайней мере, она решает многие самые хитрые моменты размещения в браузере.

Основным преимуществом плагина является то, что вы можете делать практически все что угодно - использовать аппаратный рендеринг, доступ к файловой системе и т. Д. Это наиболее гибкий вариант. Основным недостатком плагина является то, что вы можете делать практически все, что угодно - вылетать из браузера, удалять файлы, открывать дыры в безопасности, если вы не будете осторожны, и т. Д.

Полагаю, последний вариант - использовать ajax-запросы, выполнить декодирование в javascript и выполнить рендеринг на веб-холст в Chrome, но, полагаю, это все еще не очень реалистично =]

Удачи, надеюсь, это поможет.

1 голос
/ 15 октября 2011

Чистый HTML5 / CSS3 / javascript и терпение для аудитории, чтобы догнать современные браузеры. не самостоятельно реализуйте декодирование видео, вы просто создадите еще один нишевый продукт.

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

1 голос
/ 14 октября 2011

Отличный ответ от @ Taxilian.

Ради интереса вы можете пойти по маршруту HTML5:

  • переопределение G.711 / G.729 в ​​JS самостоятельно (вдохновитесь jsmad mp3 декодером )
  • создайте свой чертеж в three.js , который автоматически переключается с WebGL на холст, когда он недоступен

мои глупые 2 цента.

...