我正在开发一个 Web 应用程序,它应该从服务器播放 RTSP/RTP 流http://lscube.org/projects/feng。
HTML5 video/audio 标签是否支持 rtsp 或 rtp?如果不支持,最简单的解决方案是什么?也许需要使用 VLC 插件或类似的东西。
我正在开发一个 Web 应用程序,它应该从服务器播放 RTSP/RTP 流http://lscube.org/projects/feng。
HTML5 video/audio 标签是否支持 rtsp 或 rtp?如果不支持,最简单的解决方案是什么?也许需要使用 VLC 插件或类似的东西。
(但实际上并不是...)
HTML5的<video>
标签是协议无关的,它不在乎。您可以在URL的一部分中将协议放置在src
属性中。例如:
<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>
标签的方式是与浏览器有关的。由于HTML5还处于早期阶段,我预计支持(或不支持)会经常发生变化。
根据W3C的HTML5规范(视频元素):
用户代理可以支持任何视频和音频编解码器和容器格式。
我认为这个问题的本质并没有得到真正的回答。现在不能使用video标签来播放rtsp流。有关Chromium开发人员“永远不会”链接的另一个答案有点误导,因为链接的线程/答案并没有直接涉及Chrome通过video标签播放rtsp。请阅读整个链接的线程,特别是底部的评论和其他线程的链接。
真正的答案是:不能只将video标签放置在html 5页面上并播放rtsp。您需要使用某种JavaScript库(除非您想使用flash和silverlight播放器播放内容)来播放流媒体视频。 {依我之见}根据HTML 5视频讨论和实现的速度,各种专有视频标准的供应商都不感兴趣帮助推动其进展,因此,除非浏览器制造商自己解决问题,否则不要指望承诺的video标签易用性...这不太可能。{/依我之见}
虽然这是一个旧问题,但最近我自己也需要这样做,并取得了一些可行的成果(除非像我的回答这样可以为你省些时间): 基本上使用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
- Pawel Kffmpeg.exe -fflags nobuffer -rtsp_transport tcp -i rtsp://[SOURCE] -flags +cgop -g 30 -hls_flags delete_segments [DESTINATION]
- DanTheManHTML5中有三种流媒体协议/技术:
实时流媒体,低延迟 - WebRTC - WebSocket
VOD和实时流媒体,高延迟 - HLS
1. WebRTC
实际上,WebRTC是SRTP(安全RTP协议)。 因此我们可以说视频标签通过WebRTC间接支持RTP(SRTP)。
因此,为了在Chrome、Firefox或其他HTML5浏览器上获取RTP流,您需要一个WebRTC服务器,该服务器将向浏览器传送SRTP流。
2. WebSocket
它基于TCP,但比HLS具有更低的延迟。同样,您需要WebSocket服务器。
3. HLS
VOD(预录制视频)最流行的高延迟流媒体协议。
<video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay">
。 - Zsoltmy_ip:port
地址上进行音频和视频流传输,然后我使用了HTML5的<video>
标签,像这样:<video width="640"><source src="http://my_ip:port/test" type="video/ogg">HTML5不支持</video>
。 - patryk.bezaffmpeg -i "rtsp://user:password@ip" -c:v libx264 -f flv rtmp://server/live/stream
./objs/srs -c conf/rtmp2rtc.conf
Chrome不支持RTSP流媒体播放。
检查这个重要项目,使用WebRTC。
"WebRTC是一个免费、开放的项目,通过简单的API为浏览器和移动应用程序提供实时通信(RTC)功能"
支持的浏览器:
Chrome、Firefox和Opera。
支持的移动平台:
Android和IOS
关于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)中使用。
目前得出结论。
我正在试图无意义地构建一种解决方法,因为rtsp不能在OOB中工作。没有一个“管理器”来处理流媒体以完美地实现视频标签的方式,现在还不可能。
我目前正在研究围绕android+html(混合)解决方案,以非常狡猾的方式管理此问题。由于它应该直接从相机播放到android而没有中介服务器,我们想出了一种涉及画布标记的解决方案,以桥接非Webview和Webview。