我正在构建一个Web应用程序,该服务器应从服务器http://lscube.org/projects/feng播放RTSP / RTP流。
HTML5视频/音频标签是否支持rtsp或rtp?如果没有,最简单的解决方案是什么?也许是VLC插件或类似的东西。
我正在构建一个Web应用程序,该服务器应从服务器http://lscube.org/projects/feng播放RTSP / RTP流。
HTML5视频/音频标签是否支持rtsp或rtp?如果没有,最简单的解决方案是什么?也许是VLC插件或类似的东西。
Answers:
(但不是真的)
HTML 5的<video>
标签与协议无关,它不在乎。您将协议src
作为URL的一部分放在属性中。例如:
<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尚处于初期阶段,我希望经常更改支持(或缺乏支持)。
根据W3C的HTML5规范(视频元素):
用户代理可以支持任何视频和音频编解码器以及容器格式
GET rtp://239.255.0.1:6970 net::ERR_UNKNOWN_URL_SCHEME
。似乎video
元素上仅允许使用HTTP [S]方案。
我认为,问题的实质尚未得到真正回答。不,到目前为止,您无法使用视频标签播放rtsp流。关于链接到Chromium guy的“从不”的其他答案有点误导,因为链接的线程/答案不是直接指Chrome通过视频标签播放rtsp。阅读整个链接的线程,尤其是最底部的注释以及与其他线程的链接。
真正的答案是:不,您不能仅将视频标签放在html 5页面上并播放rtsp。您需要使用某种Javascript库(除非您想与Flash和Silverlight播放器一起玩),才能播放流视频。{IMHO}按照html 5视频讨论和实施的进度,专有视频标准的各个供应商对帮助推动这一进展不感兴趣,因此除非浏览器制造商允许,否则不要指望视频标签易于使用自己来解决问题……还是不可能的。{/ IMHO}
这是一个古老的问题,但是我最近不得不自己做,并且我做了一些工作(因此像我这样的其他响应会节省我一些时间):基本上使用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示例。
注意:尽管这不是本机支持,但不需要在用户前端上做任何额外的事情。
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]
HTML5中提供三种流协议/技术:
实时流式传输,低延迟-WebRTC-Websocket
视频点播和实时流媒体,高延迟-HLS
1. WebRTC
实际上,WebRTC是SRTP(安全RTP协议)。因此,可以说视频标签通过WebRTC间接支持RTP(SRTP)。
因此,要在您的Chrome,Firefox或其他HTML5浏览器上获取RTP流,您需要一个WebRTC服务器,该服务器将SRTP流传递给浏览器。
2. Websocket
它基于TCP,但是延迟比HLS低。同样,您需要一个Websocket服务器。
3. HLS
最流行的VOD(预录制视频)高延迟流协议。
使用VLC,我可以将实时RTSP流(mpeg4)转码为OGG格式(Vorbis / Theora)的HTTP流。质量很差,但是视频可以在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
地址上的HTTP协议流式传输音频和视频,然后使用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,将Phonon后端设置为GStreamer)。我只有H.264 / AAC RTSP(RTP)流的视频(无音频)。
来自http://media.esof2010.org/的流不适用于konqueror(KDE 4.4.1,Phonon后端设置为GStreamer)。
Chrome未实现支持RTSP流的功能。一个重要的项目,以检查它WebRTC。
“ WebRTC是一个免费的开放项目,它通过简单的API为浏览器和移动应用程序提供实时通信(RTC)功能。”
支持的浏览器:
Chrome,Firefox和Opera。
支持的移动平台:
Android和IOS