RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。因为与HTTP1.1的运作方式相似,所以代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。
在旧版的chrome上可以通过vlc插件来播放rtsp视频,但是更新到新版的chrome之后要想播放这个rtsp的视频就变得比较麻烦。如果google一下就会发现有各种解决方案,但是这些方案基本都是收费的。另外一个做法就是通过ffmpeg或者vlc播放器进行协议转换,如果是单个视频流可以通过vlc进行转换,转成http协议,直接通过video标签进行播放即可。但是如果要处理的视频流比较多,那就比较麻烦了。可以通过nginx+ffmpeg进行转换。
illuspas封装了一个支持rtmp协议的nginx,https://github.com/illuspas/nginx-rtmp-win32,下载之后直接运行nginx即可启动服务。
服务启动之后通过以下命令,将rtsp转化为rtmp提交到nginx即可:
ffmpeg -re -rtsp_transport tcp -i “rtsp://117.134.33.226:9090/dss/monitor/params?cameraid=1000026%240&substream=1” -f flv -vcodec libx264 -vprofile baseline -acodec aac -ar 8000 -strict -2 -ac 1 -f flv -s 680×400 -q 10 rtmp://localhost:1935/live/1000026
启动之后再状态页可以看到相关的流信息:
此时就可以使用video.js,播放rtmp流数据了。
视频流地址:rtmp://localhost:1935/live/1000026
☆文章版权声明☆
* 网站名称:obaby@mars
* 网址:https://h4ck.org.cn/
* 本文标题: 《html 播放rtsp 流rtsp2rtmp》
* 本文链接:https://h4ck.org.cn/2021/03/html-%e6%92%ad%e6%94%bertsp-%e6%b5%81rtsp2rtmp/
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。
分享文章: