Video 通过HTML5中的RTSP或RTP进行流媒体传输

Video 通过HTML5中的RTSP或RTP进行流媒体传输,video,html,streaming,rtsp,rtp,Video,Html,Streaming,Rtsp,Rtp,我正在构建一个web应用程序,它应该可以从服务器播放RTSP/RTP流 HTML5视频/音频标签是否支持rtsp或rtp?如果不是,最简单的解决方案是什么?也许可以选择VLC插件或类似的东西。技术上说是 (但不是真的…) HTML5的标记与协议无关,它不在乎。将协议作为URL的一部分放置在src属性中。例如: <video src="rtp://myserver.com/path/to/stream"> Your browser does not supp

我正在构建一个web应用程序,它应该可以从服务器播放RTSP/RTP流

HTML5视频/音频标签是否支持rtsp或rtp?如果不是,最简单的解决方案是什么?也许可以选择VLC插件或类似的东西。

技术上说是 (但不是真的…)

HTML5的
标记与协议无关,它不在乎。将协议作为URL的一部分放置在
src
属性中。例如:

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

您的浏览器不支持视频标记和/或RTP流。
或许

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

您的浏览器不支持视频标记和/或RTP流。
也就是说,
标记的实现是特定于浏览器的。由于HTML5还处于早期阶段,我希望经常更改支持(或缺少支持)

来自W3C的HTML5规范():

用户代理可以支持任何视频和音频编解码器以及容器格式


我对HTML5视频标签和rtsp(rtp)流的观察是,它只适用于konqueror(KDE 4.4.1,声子后端设置为GStreamer)。我只得到了带有H.264/AAC RTSP(RTP)流的视频(没有音频)


来自的流与konqueror(KDE 4.4.1,声子后端设置为GStreamer)不兼容

使用VLC,我能够将实时RTSP流(mpeg4)转换为OGG格式的HTTP流(Vorbis/Theora)。质量很差,但视频在Chrome9中工作。 我也在WEBM(VP8)中测试了一个trancoding,但它似乎不起作用(VLC有这个选项,但我不知道现在是否真的实现了…)


第一个对此有文档的人应通知我们;)

Chrome永远不会实现对RTSP流媒体的支持

至少,用铬显影剂的话说:

我们永远不会为此添加支持


我认为,这个问题的精神并没有得到真正的回答。不,您现在不能使用视频标签播放rtsp流。关于Chrome guy的“从不”链接的另一个答案有点误导,因为链接的线程/答案不是直接指Chrome通过视频标签播放rtsp。阅读整个链接的线程,尤其是底部的注释和其他线程的链接


真正的答案是:不,你不能只在HTML5页面上放置一个视频标签,然后播放rtsp。您需要使用某种类型的Javascript库(除非您想使用flash和silverlight播放器来播放视频流)。{IMHO}以HTML5视频讨论和实现的速度,各种专有视频标准的供应商对帮助这一进展不感兴趣,因此不要考虑视频标签的易用性承诺,除非浏览器制造商自己采取某种方式解决问题……同样,不太可能。{/IMHO}Chrome不支持RTSP流媒体。 一个重要的项目,检查它WebRTC

“WebRTC是一个免费的开放项目,通过简单的API为浏览器和移动应用程序提供实时通信(RTC)功能”

支持的浏览器:

Chrome、Firefox和Opera

支持的移动平台:

安卓和IOS


HTML5中有三种流媒体协议/技术:

实时流媒体,低延迟 -WebRTC -网袋

视频点播和流媒体直播,高延迟 -HLS

1。WebRTC

事实上,WebRTC是SRTP(安全RTP协议)。 因此,我们可以说视频标签通过WebRTC间接支持RTP(SRTP)

因此,要在您的Chrome、Firefox或其他HTML5浏览器上获取RTP流,您需要一个WebRTC服务器,该服务器将SRTP流传送到浏览器

2。Websocket

它基于TCP,但比HLS具有更低的延迟。同样,您需要一个Websocket服务器

3。HLS


最流行的VOD(预录视频)高延迟流媒体协议。

这是一个老问题,但我最近不得不自己做,我实现了一些工作(除了像我这样的响应可以节省我一些时间外): 基本上,使用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
然后使用它将很好地播放实时流(第二个链接下还有一个JSFIDLE示例)


注意:虽然这不是本机支持,但它不需要用户前端的任何额外功能。

现在就得出结论

由于rtsp在OOB中不起作用,所以我正在尝试建立一种无意义的解决方法。如果没有一个处理流媒体的“管理者”来完善视频标签的工作方式,现在就不可能了


我目前正在研究android+html(混合)解决方案,以一种非常邪恶的方式来管理它。由于它应该在没有中间服务器的情况下直接从摄像头播放到android,因此我们提出了一个包含canvas标签的解决方案,以将非webview与webview连接起来。

Good comment Golf。我也想做埃尔本正在做的事情,但没有成功。
“C:\ProgramFiles\VideoLAN\VLC\VLC.exe”-我的虚拟屏幕://:屏幕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.1:8080/desktop.ogg}:no sout rtp sap:no sout standard sap:ttl=1:sout keep
-这是一个VLC命令,它将您的输入(例如屏幕捕获设备)流式传输到给定的输出流(例如),然后您可以将其嵌入视频标签:
。但不幸的是,性能非常差,如果也可以使用MP4容器来实现,那将是非常棒的。支持MP4的浏览器比支持OGG的浏览器要多,这对我来说也很有用。我在
我的ip:port
地址上设置了通过HTTP协议传输音频和视频的VLC,然后我使用了HTML5
标签,如下所示:
HTML5不受支持
。几乎可以。Chrome已经支持RTSP流媒体,这就是为什么他永远都不会去