本发明属于视频处理,具体涉及一种基于websocket的视频转发方法。
背景技术:
1、在车间实现无人值守的自动化生产,需要一定数量的摄像头安装到生产车间监控。而随着网络科技的快速发展,指挥系统、监控系统等业务系统的架构正逐步从c/s架构向b/s架构转变或采用b/s架构设计,在浏览器网页里观看视频流的解决方法主要有两种:第一种是浏览器直接播放摄像机传输过来的视频流。第二种是通过视频转发服务将前端摄像头视频流转发给浏览器播放。
2、现有技术存在的缺点包括:
3、(1)浏览器需要安装flash或者安装自定义插件播放视频流,但是flash player已经停止更新,自定义插件可能导致浏览器不稳定。
4、(2)当摄像头所在车间的网络和浏览器所在办公区的网络采取隔离时,在办公区的浏览器不能直接访问到所有的前端摄像头视频流。
5、(3)市面上许多视频流转发服务,直接是将视频数据解包再封包的方式转发出去,如果前端摄像头是h265视频数据,转发后再封包的视频格式还是h265,浏览器接收后将不能直接解码。
6、(4)目前常用的流媒体传输协议有rtmp、hls和http-flv。rtmp是目前最常用的流媒体传输协议,但是在浏览器中只能通过flash使用,鉴于flash已经停止更新,所以在网页播放端基本不会以rtmp做拉流;hls是苹果公司提出的基于http的流媒体网络传输协议,其工作原理是切片式传输,延时较大,通常对于1080p视频不低于10秒的延迟;http-flv是把音视频数据封装成flv,然后通过http连接传输,对于网页播放端,本来还是需要flash才能播放,不过flv.js的出现又弥补了这个缺陷,但是存在视频延迟,视频卡顿等问题。
技术实现思路
1、本发明目的在于提供一种基于websocket的视频转发方法,解决现有技术中的不足,实现浏览器无插件实时播放监控视频流。
2、本发明的技术方案如下:一种基于websocket的视频转发方法,包括如下步骤:
3、步骤1:视频转发服务基于rtsp协议拉取前端摄像头监控的视频流,转发生成符合浏览器支持播放的视频数据格式mp4;
4、步骤2:视频转发服务自定传输协议,将视频流传输给浏览器进行播放显示。
5、所述的视频转发服务包括:http接口模块、rtsp拉流模块、demux功能、视频解码模块、视频编码模块、mux模块和自定传输协议。
6、所述的步骤1中视频转发服务对音视频数据流转化有两条路线。
7、所述的步骤1中的1条路线为demux模块分离出的视频格式是h265数据,发送给视频解码模块解码成yuv数据,再经视频编码模块编码成h264数据,编码输出的h264数据和音频aac数据,一起通过mux模块复合成mp4数据,最后通过自定传输协议传输给浏览器。
8、所述的步骤1中的1条路线为demux模块分离出的视频格式是h264数据,直接和音频aac数据,一起通过mux模块复合成mp4数据,最后也通过自定传输协议传输给浏览器。
9、所述的步骤2中所述的自定传输协议包含两部分,传输方式和传输数据包。
10、步骤2中所述的传输方式采用websocket协议,浏览器和视频转发服务只需要完成一次握手,两者之间直接创建持久性的连接,并进行双向数据传输。
11、步骤2中所述的传输数据包采用自定义数据格式,包括定长的协议头和长度可变的协议体。
12、步骤2中所述的协议头有version、cameraid、width、height、sequence number和len组成。
13、步骤2中所述的可变的协议体载体是mp4格式的音视频数据。
14、步骤2中所述的传输方式采用浏览器支持的websocket协议,传输数据包采用自定义的数据格式有16字节的定长协议头和长度可变的协议体组成。
15、本发明的有益效果在于:(1)基于目前成熟的websocket技术自定传输协议,达到实时传输视频低延迟的效果;(2)浏览器无需下载flash播放器或自定义插件播放视频;(3)不管网络是否隔离,不管前端摄像头视频源是h264还是h265,浏览器都能播放前端监控的视频流。
1.一种基于websocket的视频转发方法,其特征在于,包括如下步骤:
2.如权利要求1所述的一种基于websocket的视频转发方法,其特征在于:所述的视频转发服务包括:http接口模块、rtsp拉流模块、demux功能、视频解码模块、视频编码模块、mux模块和自定传输协议。
3.如权利要求1所述的一种基于websocket的视频转发方法,其特征在于:所述的步骤1中视频转发服务对音视频数据流转化有两条路线。
4.如权利要求3所述的一种基于websocket的视频转发方法,其特征在于:所述的步骤1中的1条路线为demux模块分离出的视频格式是h265数据,发送给视频解码模块解码成yuv数据,再经视频编码模块编码成h264数据,编码输出的h264数据和音频aac数据,一起通过mux模块复合成mp4数据,最后通过自定传输协议传输给浏览器。
5.如权利要求3所述的一种基于websocket的视频转发方法,其特征在于:所述的步骤1中的1条路线为demux模块分离出的视频格式是h264数据,直接和音频aac数据,一起通过mux模块复合成mp4数据,最后也通过自定传输协议传输给浏览器。
6.如权利要求1所述的一种基于websocket的视频转发方法,其特征在于:所述的步骤2中所述的自定传输协议包含两部分,传输方式和传输数据包。
7.如权利要求6所述的一种基于websocket的视频转发方法,其特征在于:步骤2中所述的传输方式采用websocket协议,浏览器和视频转发服务只需要完成一次握手,两者之间直接创建持久性的连接,并进行双向数据传输;步骤2中所述的传输数据包采用自定义数据格式,包括定长的协议头和长度可变的协议体。
8.如权利要求7所述的一种基于websocket的视频转发方法,其特征在于:步骤2中所述的协议头有version、cameraid、width、height、sequence number和len组成。
9.如权利要求7所述的一种基于websocket的视频转发方法,其特征在于:步骤2中所述的可变的协议体载体是mp4格式的音视频数据。
10.如权利要求7所述的一种基于websocket的视频转发方法,其特征在于:步骤2中所述的传输方式采用浏览器支持的websocket协议,传输数据包采用自定义的数据格式有16字节的定长协议头和长度可变的协议体组成。