Я создаю веб-приложение, которое должно воспроизводить поток RTSP / RTP с сервера http://lscube.org/projects/feng .
Поддерживает ли тег HTML5 видео / аудио поддержку rtsp или rtp? Если нет, то каким было бы самое простое решение? Возможно, перейдите на плагин VLC или что-то в этом роде.
Ответы:
Технически «Да»
(но не совсем ...)
<video>
Тег HTML 5 не зависит от протокола - ему все равно. Вы помещаете протокол вsrc
атрибут как часть URL. Например:или, может быть
Тем не менее, реализация
<video>
тега зависит от браузера. Поскольку для HTML 5 это первые дни, я ожидаю частой смены поддержки (или отсутствия поддержки).Из спецификации HTML5 W3C ( элемент видео ):
источник
GET rtp://239.255.0.1:6970 net::ERR_UNKNOWN_URL_SCHEME
. Кажется, что толькоvideo
элементы HTTP [S] допускаются для элементов.Я думаю, что на этот вопрос ответа не было. Нет, вы не можете использовать видео тег для воспроизведения потоков RTSP на данный момент. Другой ответ, касающийся ссылки на «никогда» Chromium, немного вводит в заблуждение, поскольку связанная ветка / ответ не имеет прямого отношения к Chrome, воспроизводящему rtsp через тег видео. Прочитайте всю связанную ветку, особенно комментарии в самом низу и ссылки на другие темы.
Реальный ответ таков: нет, вы не можете просто поместить видео тег на html 5 страницу и играть в rtsp. Вам нужно использовать какую-то библиотеку Javascript (если только вы не хотите играть с флэш-плеерами и проигрывателями Silverlight) для воспроизведения потокового видео. {IMHO} При скорости обсуждения и реализации видео html 5 различные поставщики проприетарных стандартов видео не заинтересованы в том, чтобы помочь этому продвинуться вперед, поэтому не считайте обещанную простоту использования тега видео, если только браузеры не сделали возьмите это на себя, чтобы как-то решить проблему ... опять же вряд ли. {/ IMHO}
источник
Это старая проблема, но недавно мне пришлось сделать это самому, и я добился чего-то работающего так (кроме того, что мой ответ сэкономил бы мне немного времени): в основном используйте ffmpeg, чтобы изменить контейнер на HLS, большую часть потока IPCams h264 и некоторые основной тип PCM, поэтому используйте что-то вроде этого:
Затем используйте video.js с плагином HLS. Это будет хорошо воспроизводить живой поток. Есть также пример jsfiddle под второй ссылкой).
Примечание: хотя это не встроенная поддержка, для пользователя не требуется ничего дополнительного.
источник
ffmpeg -v info -rtsp_transport tcp -i rtsp://host:port/[sdp] -c:v copy -c:a copy -maxrate 400k -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
ffmpeg.exe -fflags nobuffer -rtsp_transport tcp -i rtsp://[SOURCE] -flags +cgop -g 30 -hls_flags delete_segments [DESTINATION]
Chrome никогда не будет поддерживать потоковую передачу RTSP.
По крайней мере, по словам разработчика Chromium здесь :
источник
В HTML5 есть три потоковых протокола / технологии:
Прямая трансляция, низкая задержка - WebRTC - Websocket
VOD и прямая трансляция, высокая задержка - HLS
1. WebRTC
На самом деле WebRTC - это SRTP (безопасный протокол RTP). Таким образом, можно сказать, что видеотег поддерживает RTP (SRTP) косвенно через WebRTC.
Поэтому, чтобы получить поток RTP на вашем Chrome, Firefox или другом браузере HTML5, вам нужен сервер WebRTC, который доставит поток SRTP в браузер.
2. Вебсокет
Он основан на TCP, но с меньшей задержкой, чем HLS. Опять же вам нужен сервер Websocket.
3. ЗОЖ
Самый популярный потоковый протокол с высокой задержкой для VOD (предварительно записанное видео).
источник
С VLC я могу транскодировать живой поток RTSP (mpeg4) в поток HTTP в формате OGG (Vorbis / Theora). Качество плохое, но видео работает в Chrome 9. Я также тестировал транскодирование в WEBM (VP8), но, похоже, оно не работает (у VLC есть опция, но я не знаю, действительно ли она реализована на данный момент. .)
Первый, у кого есть документ об этом, должен уведомить нас;)
источник
"C:\Program Files\VideoLAN\VLC\vlc.exe" -I dummy screen:// :screen-fps=16.000000 :screen-caching=100 :sout=#transcode{vcodec=theo,vb=800,scale=1,width=600,height=480,acodec=mp3}:http{mux=ogg,dst=127.0.0.1:8080/desktop.ogg} :no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep
- это команда VLC, которая передает ваш ввод (например, устройство захвата экрана) в заданный выходной поток (например, 127.0.0.1:8080/desktop.ogg )<video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay">
.my_ip:port
адресу и чем я использовал HTML5<video>
тег , как это:<video width="640"><source src="http://my_ip:port/test" type="video/ogg">HTML5 not supported</video>
.Мои наблюдения относительно потоков видео-тегов 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).
источник
В Chrome не реализована поддержка потоковой передачи RTSP. Важный проект, чтобы проверить это WebRTC.
«WebRTC - это бесплатный открытый проект, который предоставляет браузерам и мобильным приложениям функции связи в реальном времени (RTC) через простые API»
Поддерживаемые браузеры:
Chrome, Firefox и Opera.
Поддерживаемые мобильные платформы:
Android и IOS
http://www.webrtc.org/
источник