Как использовать прямые трансляции VLC с видео HTML5? - PullRequest
40 голосов
/ 27 октября 2011

Я пробовал HTTP Ogg / Theora и работает нормально с Chrome, но не с Firefox 7.

Конфигурация VLC:

Для тестирования я транслировал рабочий стол с использованием следующей конфигурации командной строки vlc:

vlc.exe screen: //: screen-fps = 30: screen-caching = 100 : Sout = # перекодировать {vcodec = Theo, VB = 800, масштаб = 1, ширина = 800, высота = 600, acodec = нет}: {HTTP Мультиплексор = OGG, ДСТ =: 8181 / настольные} : no-sout-rtp-sap: no-sout-standard-sap: ttl = 1: sout-keep

Конфигурация тега видео HTML5:

<video id="video" src="http://my_host_name:8181/desktop" type="video/ogg; codecs=theora" autoplay="autoplay"/>

Есть идеи?

1 Ответ

35 голосов
/ 31 октября 2011

Я некоторое время боролся с этим и смог убедиться, что Ogg / Theora отлично работают в Firefox 7, Nightly 10 и Opera Next.

Теперь все работает и в Google Chrome.Проблема, с которой я столкнулся в Chrome, заключалась в том, что для последней версии Chrome в XP больше не требуется инструкция «--enable-webgl», передаваемая в командной строке.Единственная запись командной строки, необходимая в XP - это '--ignore-gpu-blacklist', поскольку графические процессоры занесены в черный список в XP.

Кроме того, я смог убедиться, что Chrome отлично работает с Web-m / VP8Ворбис ручьи.Opera и Firefox пока не поддерживают его.

Основные обнаруженные мной проблемы:

1 - Загрузка страницы: Если вы загружаете страницу из файловой системы, а не наоборотиз веб-браузера видео не будет отображаться (любое видео, vlc или файл).

Чтобы это исправить, просто убедитесь, что вы загружаете контент с веб-сервера.

2 - потоковое вещание в реальном времени: Использовался VLC, и для того, чтобы он работал, мне пришлось обходить ограничения безопасности WebGL / HTML5 Video.Бывает, что видеопотоки, которые не исходят из одного и того же веб-сервера и из веб-контекста или субконтекста, не будут воспроизводиться из-за ограничений безопасности.

Чтобы это исправить, просто установите сервер приложений на веб-сервер Apache и настройте поток VLC так, чтобы он находился в веб-субконтексте загруженных веб-страниц.Например, в Apache 2.2 включите прокси-сервер мод и добавьте следующие строки в файл httpd.conf:

# Mod_proxy Module
ProxyReceiveBufferSize 16384

ProxyRequests On
ProxyVia On
ProxyPreserveHost On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

# VLC server stream
ProxyPass /desktop/video/stream.ogg http://vlc_streaming_host:8181/desktop.ogg
ProxyPassReverse /desktop/video/stream.ogg http://vlc_streaming_host:8181/desktop.ogg

# If content is on another server (JBoss, Spring, etc...) then uncomment next lines
#ProxyPass /desktop http://server_content_host:8080/streamer
#ProxyPassReverse /desktop http://server_content_host:8080/streamer

Если вы также используете Apache для хранения своего контента, тогда, и на основе приведенного выше примерапросто поместите свои html-страницы в каталог с именем «desktop».

Заключение на данный момент: Несмотря на то, что спецификации видео HTML5 предоставляют место для потоков, пока что я пришел к выводу, чтоВидео HTML5 почти не готово к прямой трансляции.В моих экспериментах видео тег всегда буферизовался, и я не мог найти способ отключить его, и это в конечном итоге приводило к задержке по крайней мере на 5-8 секунд.

Итак, я думаю, что дляРешения на базе Flash и RTMP все еще в пути.

...