Потоковая передача через RTSP или RTP в HTML5 - PullRequest
142 голосов
/ 15 ноября 2009

Я создаю веб-приложение, которое должно воспроизводить поток RTSP / RTP с сервера http://lscube.org/projects/feng.

Поддерживает ли тег HTML5 видео / аудио поддержку rtsp или rtp? Если нет, то каким было бы самое простое решение? Возможно, перейдите на плагин VLC или что-то в этом роде.

Ответы [ 8 ]

88 голосов
/ 15 ноября 2009

Технически «Да»

(но не совсем ...)

Тег <video> в HTML 5 не зависит от протокола - ему все равно. Вы помещаете протокол в атрибут src как часть URL. E.g.:

<video src="rtp://myserver.com/path/to/stream">
    Your browser does not support the VIDEO tag and/or RTP streams.
</video>

или, может быть

<video src="http://myserver.com:1935/path/to/stream/myPlaylist.m3u8">
    Your browser does not support the VIDEO tag and/or RTP streams.
</video>

Тем не менее реализация тега <video> зависит от браузера. Поскольку для HTML 5 это первые дни, я ожидаю частой смены поддержки (или отсутствия поддержки).

Из спецификации HTML5 W3C ( Элемент видео ):

Пользовательские агенты могут поддерживать любые видео и аудио кодеки и форматы контейнеров

51 голосов
/ 11 июля 2012

Я думаю, что дух этого вопроса не был дан истинный ответ. Нет, вы не можете использовать видео тег для воспроизведения потоков RTSP на данный момент. Другой ответ, касающийся ссылки на «никогда» парня из Chromium, немного вводит в заблуждение, поскольку связанная ветка / ответ не имеет прямого отношения к Chrome, воспроизводящему rtsp через тег видео. Прочитайте всю связанную ветку, особенно комментарии в самом низу и ссылки на другие темы.

Реальный ответ таков: нет, вы не можете просто поместить видео-тег на html 5-страницу и воспроизвести rtsp. Вам нужно использовать какую-то библиотеку Javascript (если только вы не хотите играть в флеш- и Silverlight-плееры) для воспроизведения потокового видео. {IMHO} При скорости обсуждения и внедрения видео html 5 различные поставщики проприетарных стандартов видео не заинтересованы в том, чтобы помочь этому продвинуться вперед, поэтому не считайте обещанную простоту использования тега видео, если только браузеры не сделали возьмите это на себя, чтобы как-то решить проблему ... опять же вряд ли. {/ IMHO}

23 голосов
/ 26 сентября 2016

Это старый вопрос, но мне недавно пришлось сделать это самому, и я добился кое-чего работающего так (кроме того, что мой ответ сэкономил бы мне немного времени): В основном используйте ffmpeg для изменения контейнера на HLS, большую часть потока IPCams h264 и некоторый базовый тип PCM, поэтому используйте что-то вроде этого:

ffmpeg -v info -i rtsp://ip:port/h264.sdp -c:v copy -c:a copy -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 /var/www/html/test.m3u8

Затем используйте video.js с плагином HLS Это будет хорошо воспроизводить живой поток. Есть также пример jsfiddle под второй ссылкой).

Примечание. Несмотря на то, что это не встроенная поддержка, для пользователя ничего не требуется.

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

Chrome никогда не будет поддерживать потоковую передачу RTSP.

По крайней мере, по словам разработчика Chromium здесь :

мы никогда не собираемся добавлять поддержку для этого

14 голосов
/ 18 сентября 2015

В HTML5 есть три протокола / технологии потоковой передачи:

Прямая трансляция, низкая задержка - WebRTC - Websocket

VOD и прямая трансляция, высокая задержка - HLS

1. WebRTC

На самом деле WebRTC - это SRTP (безопасный протокол RTP). Таким образом, мы можем сказать, что видеотег поддерживает RTP (SRTP) косвенно через WebRTC.

Поэтому, чтобы получить поток RTP на вашем Chrome, Firefox или другом браузере HTML5, вам нужен сервер WebRTC, который доставит поток SRTP в браузер.

2. WebSocket

Он основан на TCP, но с меньшей задержкой, чем HLS. Вам снова нужен сервер Websocket.

3. HLS

Самый популярный потоковый протокол с высокой задержкой для VOD (предварительно записанное видео).

8 голосов
/ 04 февраля 2011

С VLC я могу транскодировать живой поток RTSP (mpeg4) в поток HTTP в формате OGG (Vorbis / Theora). Качество плохое, но видео работает в Chrome 9. Я также тестировал транскодирование в WEBM (VP8), но, похоже, оно не работает (у VLC есть опция, но я не знаю, действительно ли она реализована на данный момент ...)

Первый, у кого есть документ об этом, должен уведомить нас;)

1 голос
/ 11 сентября 2015

В Chrome не реализована поддержка потоковой передачи RTSP. Важный проект, чтобы проверить это WebRTC.

"WebRTC - это бесплатный, открытый проект, который предоставляет браузерам и мобильным приложениям функции связи в реальном времени (RTC) через простые API-интерфейсы"

Поддерживаемые браузеры:

Chrome, Firefox и Opera.

Поддерживаемые мобильные платформы:

Android и IOS

http://www.webrtc.org/

1 голос
/ 11 марта 2010

Мои наблюдения, касающиеся тегов видео HTML 5 и потоков rtsp (rtp), заключаются в том, что он работает только с konqueror (KDE 4.4.1, для фононного бэкенда установлено значение GStreamer). Я получил только видео (без звука) с потоком H.264 / AAC RTSP (RTP).

Потоки из http://media.esof2010.org/ не работали с konqueror (KDE 4.4.1, для фононного бэкенда установлено значение GStreamer).

...