本发明涉及视频监控、安防、物联网领域,更具体地,涉及一种基于rtsp协议的实时视频无插件预览方法及系统。
背景技术
目前各个视频厂家开发的视频监控设备,在pc上使用浏览器进行视频实时预览时,均需要安装厂家提供的web控件,该web控件是厂家基于activex和npapi开发,所以在pc端浏览器的选择上,用户只能选择microsoftie浏览器(基于activex插件)和低版本(chrome42之前的版本)的chrome内核的浏览器,例如chrome、firefox等。
而目前的问题是,现有技术中从chrome42版本开始禁用npapi插件,导致现在的用户在查看实时视频时只能使用ie浏览器,这在很大程度上限制了用户的选择权,并且在某些特定的场景下,用户不能使用ie时,视频设备的实时视频就无法查看。
另外现有技术的很多视频直播解决方案中,采用rtmp协议(realtimemessagingprotocol,实时消息传输协议,是一种设计用来进行实时数据通信的网络协议,主要用来在flash/air平台和支持rtmp协议的流媒体/交互服务器之间进行音视频和数据通信,是adobesystems公司为flash播放器和服务器之间音频、视频和数据传输开发的开放协议)推流的方式,中间搭建fms(adobeflashmediaserver)媒体服务器进行转发,再通过rtmp协议或者hls协议(httplivestreaming,是苹果公司的动态码率自适应技术,主要用于pc和apple终端的音视频服务,包括一个m3u(8)的索引文件,ts媒体分片文件和key加密串文件)下发到客户端,前者必须安装adobeflashplayer播放器才能实时预览,而hls协议下发的视频流虽然不用安装插件,但是实时性较差,视频画面有延迟,无法满足视频监控及安防行业低延迟的使用场景。
因此,基于以上特点,设计一种不需要安装浏览器插件或者是扩展程序,并且支持跨浏览器的实时视频无插件预览方法及系统,就成为了本领域技术人员亟待解决的技术问题。
技术实现要素:
有鉴于此,本发明提供了一种基于rtsp协议的实时视频无插件预览方法及系统,以解决现有技术中的问题。
本发明公开了一种基于rtsp协议的实时视频无插件预览方法,包括:
向前端设备获取实时码流;
将前端设备的实时码流,通过rtsp协议将实时码流传输到流媒体服务器;
流媒体服务器接收到h.264格式的实时码流,通过ffmpeg的音频视频编解码库libavcodec,对h.264格式的实时码流进行解码操作,解码成yuv格式的原始码流;
流媒体服务器将yuv格式的原始码流,通过libvpx库,编码成vp8格式的码流,并通过websocket协议将vp8格式的码流转发到各个客户端浏览器;客户端浏览器采用基于webrtc技术的webapi接口,解码vp8格式的码流,解码后的码流直接通过html5进行播放。
优选的,前端设备包括网络摄像机、网络硬盘录像机、平台软件;
向前端设备获取实时码流的方法具体包括:向网络摄像机直接获取实时码流;或者,网络摄像机接入网络硬盘录像机,通过网络硬盘录像机来预览监控点实时视频的场景,获取实时码流;或者,将网络摄像机、网络硬盘录像机对接视频厂家的平台软件,通过平台软件来获取实时码流。
进一步优选的,网络摄像机、网络硬盘录像机、平台软件支持rtsp协议。
优选的,webapi接口包括mediastream、rtcpeerconnection、rtcdatachannel。
优选的,将前端设备的实时码流,通过rtsp协议将实时码流传输到流媒体服务器时,rtsp客户端与rtsp服务端之间的交互过程,主要包括:
rtsp客户端发送options请求,询问rtsp服务端有哪些方法可用,rtsp服务端做出回应;
rtsp客户端发送describe请求,要求获得流媒体格式、长度的信息,rtsp服务端做出回应,流媒体的信息通过sdp协议给出;
rtsp客户端发送setup请求,协商流媒体传输方式,并与rtsp服务端建立rtp通道;
rtsp客户端发送play请求,协商流媒体播放,rtsp服务端开始发送码流数据;
rtsp客户端发送teardown请求,关闭会话,停止播放。
本发明还公开了一种基于rtsp协议的实时视频无插件预览系统,包括:前端设备、流媒体服务器、客户端浏览器;
前端设备,用于提供实时码流,并通过rtsp协议将实时码流传输到流媒体服务器;
流媒体服务器,用于将接收到h.264格式的实时码流,通过ffmpeg的音频视频编解码库libavcodec,对h.264格式的实时码流进行解码操作,解码成yuv格式的原始码流,再将yuv格式的原始码流,通过libvpx库,编码成vp8格式的码流,并通过websocket协议将vp8格式的码流转发到各个客户端浏览器;
客户端浏览器,用于通过webrtc技术的webapi接口,解码vp8格式的码流,解码后的码流直接通过html5进行播放。
优选的,前端设备包括网络摄像机、网络硬盘录像机、平台软件;
网络摄像机用于直接获取码流;或者,网络摄像机接入网络硬盘录像机,通过网络硬盘录像机来预览监控点实时视频的场景,获取实时码流;或者,网络摄像机、网络硬盘录像机对接视频厂家的平台软件,通过平台软件来获取实时码流。
优选的,网络摄像机、网络硬盘录像机、平台软件支持rtsp协议。
优选的,webapi接口包括mediastream、rtcpeerconnection、rtcdatachannel。
优选的,通过rtsp协议将实时码流传输到流媒体服务器,包括rtsp客户端与rtsp服务端之间的交互过程:
rtsp客户端发送options请求,询问rtsp服务端有哪些方法可用,rtsp服务端做出回应;
rtsp客户端发送describe请求,要求获得流媒体格式、长度的信息,rtsp服务端做出回应,流媒体的信息通过sdp协议给出;
rtsp客户端发送setup请求,协商流媒体传输方式,并与rtsp服务端建立rtp通道;
rtsp客户端发送play请求,协商流媒体播放,rtsp服务端开始发送码流数据;
rtsp客户端发送teardown请求,关闭会话,停止播放。
与现有技术相比,本发明提供的基于rtsp协议的实时视频无插件预览方法及系统,至少实现了如下的有益效果:
1、本发明将rtsp协议作为切入点,在实现本发明的预览方法时,不用再关心视频设备需要提供的sdk软件开发工具包或者activex插件,因为由于厂家、设备型号、设备版本、移动端等因素的影响,sdk软件开发工具包也衍生出诸多版本,开发对接工作繁琐、重复,因此实现本发明时,只需要按照规则,提供视频设备rtsp协议的取流地址,再经过流媒体服务器的解码、编码、转发一系列过程,到客户端浏览器可直接解码播放,降低了工作难度和提高了效率。
2、本发明的预览方法不需要安装浏览器插件,如activex、adobeflashplayer,或者是浏览器扩展程序,并且支持跨浏览器,如支持chrome、firefox、opera,从而提供更多可选择性的实时视频预览方法,也无需进行浏览器的相关设置操作,便可实时预览,低延迟甚至可以是无延迟监控视频。
3、本发明基于rtsp协议的实时码流,经过解码、编码、转发这些操作,基本都是实时的,在服务器性能、网络状况均正常的情况下,测试视频播放的延迟可控制在1s左右。
4、使用本发明的预览方法及系统,开发者不需要sdk软件开发工具包,可以省去大量繁琐、重复的对接开发工作;
5、使用本发明的预览方法及系统,客户端浏览器不需要安装插件或扩展程序,使用方便快捷;
6、本发明的预览方法及系统支持跨浏览器,选择余地大;
7、本发明的预览方法及系统支持跨平台,如android/ios移动端使用上述浏览器,同样可以播放;
8、本发明的预览方法及系统低延迟,实时性较hls的方式要好。
当然,实施本发明的任一产品必不特定需要同时达到以上所述的所有技术效果。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是本发明实施例提供的一种基于rtsp协议的实时视频无插件预览方法流程图;
图2是本发明实施例提供的一种rtsp客户端与rtsp服务端之间的交互过程的流程图;
图3是本发明实施例提供的另一种基于rtsp协议的实时视频无插件预览方法流程图;
图4是本发明实施例提供的又一种基于rtsp协议的实时视频无插件预览方法流程图;
图5是本发明实施例提供的一种基于rtsp协议的实时视频无插件预览系统工作原理框图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
实施例一
请参考图1,图1是本发明实施例提供的一种基于rtsp协议的实时视频无插件预览方法流程图,本实施例的预览方法包括:
步骤101:向网络摄像机直接获取实时码流;
步骤102:将获取到的网络摄像机的实时码流,通过rtsp协议将实时码流传输到流媒体服务器;
步骤103:流媒体服务器接收到h.264格式的实时码流,通过ffmpeg的音频视频编解码库libavcodec,对h.264格式的实时码流进行解码操作,解码成yuv格式的原始码流;
步骤104:流媒体服务器将yuv格式的原始码流,通过libvpx库,编码成vp8格式的码流;
步骤105:通过websocket协议将vp8格式的码流转发到各个客户端浏览器;
步骤106:客户端浏览器采用基于webrtc技术的webapi接口,解码vp8格式的码流;
步骤107:解码后的码流直接通过html5进行播放。
具体而言,本实施例中,步骤106中的webapi接口包括mediastream、rtcpeerconnection、rtcdatachannel。本实施例中的网络摄像机支持rtsp协议。步骤102的将前端设备的实时码流,通过rtsp协议将实时码流传输到流媒体服务器时,rtsp客户端与rtsp服务端之间的交互过程,请参考图2,图2是本发明实施例提供的一种rtsp客户端与rtsp服务端之间的交互过程的流程图,主要包括:
步骤1021:rtsp客户端发送options请求,询问rtsp服务端有哪些方法可用,rtsp服务端做出回应;
步骤1022:rtsp客户端发送describe请求,要求获得流媒体格式、长度的信息,rtsp服务端做出回应,流媒体的信息通过sdp协议给出;
步骤1023:rtsp客户端发送setup请求,协商流媒体传输方式,并与rtsp服务端建立rtp通道;
步骤1024:rtsp客户端发送play请求,协商流媒体播放,rtsp服务端开始发送码流数据;
步骤1025:rtsp客户端发送teardown请求,关闭会话,停止播放。
本实施例基于rtsp协议的实时码流,经过解码、编码、转发这些操作,基本都是实时的,在服务器性能、网络状况均正常的情况下,测试视频播放的延迟可控制在1s左右,而hls协议的原理是将直播流分成一段一段的小段视频去下载播放的,所以如果假设列表里面的包含5个ts文件,每个ts文件包含5秒的视频内容,那么整体的延迟就是25秒。当然可以缩短列表的长度和单个ts文件的大小来降低延迟,极致来说可以缩减列表长度为1,并且ts文件的时长为1s,但是这样会造成请求次数增加,增大服务器压力,当网速慢时回造成更多的缓冲,因此本实施例的预览方法与基于hls协议相比,低延迟,实时性较好。
为了更进一步理解本实施例,需要说明的是,本实施例中,网络摄像机,是视频监控设备,用于采集视频。ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,采用lgpl或gpl许可证,它提供了录制、转换以及流化音视频的完整解决方案。
rtsp(realtimestreamingprotocol)协议,即实时流传输协议,是tcp/ip协议体系中的一个应用层协议,由哥伦比亚大学、网景和realnetworks公司提交的ietfrfc标准,该协议定义了一对多应用程序如何有效地通过ip网络传送多媒体数据,rtsp在体系结构上位于rtp和rtcp之上,它使用tcp或udp完成数据传输。
rtp(real-timetransportprotocol),即实时传输协议,它是由ietf的多媒体传输工作小组1996年在rfc1889中公布的,后在rfc3550中进行更新,rtp协议详细说明了在互联网上传递音频和视频的标准数据包格式。
流媒体服务器的主要功能是以流式协议(rtp/rtsp、mms、rtmp等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。
h.264格式是国际标准化组织(iso)和国际电信联盟(itu)共同提出的继mpeg4之后的新一代数字视频压缩格式。
vp8格式是由google拥有且开放的视频压缩格式,能以更少的数据提供更高质量的视频,而且只需较小的处理能力即可播放视频,为致力于实现产品及服务差异化的网络电视、iptv和视频会议公司提供理想的解决方案。
webrtc(webreal-timecommunication),网页实时通信,是谷歌开源的一个支持浏览器进行实时语音对话或视频对话的技术。
实施例二
请参考图3,图3是本发明实施例提供的另一种基于rtsp协议的实时视频无插件预览方法流程图,本实施例的预览方法包括:
步骤301:网络摄像机接入网络硬盘录像机,通过网络硬盘录像机来预览监控点实时视频的场景,获取实时码流;
步骤302:将获取到的实时码流,通过rtsp协议将实时码流传输到流媒体服务器;
步骤303:流媒体服务器接收到h.264格式的实时码流,通过ffmpeg的音频视频编解码库libavcodec,对h.264格式的实时码流进行解码操作,解码成yuv格式的原始码流;
步骤304:流媒体服务器将yuv格式的原始码流,通过libvpx库,编码成vp8格式的码流;
步骤305:通过websocket协议将vp8格式的码流转发到各个客户端浏览器;
步骤306:客户端浏览器采用基于webrtc技术的webapi接口,解码vp8格式的码流;
步骤307:解码后的码流直接通过html5进行播放。
为了更进一步理解本实施例,需要说明的是,本实施例中的网络摄像机、网络硬盘录像机支持rtsp协议。网络硬盘录像机,它最主要的功能是通过网络接收网络摄像机传输的数字视频码流,并进行存储、管理,从而实现网络化带来的分布式架构优势。简单来说,通过网络硬盘录像机,可以同时观看、浏览、回放、管理、存储多个网络摄像机。
实施例三
请参考图4,图4是本发明实施例提供的又一种基于rtsp协议的实时视频无插件预览方法流程图,本实施例的预览方法包括:
步骤401:将网络摄像机、网络硬盘录像机对接视频厂家的平台软件,通过平台软件来获取实时码流;
步骤402:将获取到的实时码流,通过rtsp协议将实时码流传输到流媒体服务器;
步骤403:流媒体服务器接收到h.264格式的实时码流,通过ffmpeg的音频视频编解码库libavcodec,对h.264格式的实时码流进行解码操作,解码成yuv格式的原始码流;
步骤404:流媒体服务器将yuv格式的原始码流,通过libvpx库,编码成vp8格式的码流;
步骤405:通过websocket协议将vp8格式的码流转发到各个客户端浏览器;
步骤406:客户端浏览器采用基于webrtc技术的webapi接口,解码vp8格式的码流;
步骤407:解码后的码流直接通过html5进行播放。
为了更进一步理解本实施例,需要说明的是,本实施例中的网络摄像机、网络硬盘录像机、平台软件支持rtsp协议。
实施例四
请参考图5,图5是本发明实施例提供的一种基于rtsp协议的实时视频无插件预览系统工作原理框图,该系统包括:前端设备1、流媒体服务器2、客户端浏览器3;
具体而言,前端设备1,用于提供实时码流,并通过rtsp协议将实时码流传输到流媒体服务器2;
流媒体服务器2,用于将接收到h.264格式的实时码流,通过ffmpeg的音频视频编解码库libavcodec,对h.264格式的实时码流进行解码操作,解码成yuv格式的原始码流,再将yuv格式的原始码流,通过libvpx库,编码成vp8格式的码流,并通过websocket协议将vp8格式的码流转发到各个客户端浏览器3;
客户端浏览器3,用于通过webrtc技术的webapi接口,解码vp8格式的码流,解码后的码流直接通过html5进行播放。
本实施例中,前端设备1包括网络摄像机11、网络硬盘录像机12、平台软件13;网络摄像机用于直接获取码流;或者,网络摄像机接入网络硬盘录像机,通过网络硬盘录像机12来预览监控点实时视频的场景,获取实时码流;或者,网络摄像机11、网络硬盘录像机12对接视频厂家的平台软件13,通过平台软件13来获取实时码流。即本实施获取实时码流的方式不限定于只能向网络摄像机11取码流,也可以网络摄像机11接入网络硬盘录像机12,通过网络硬盘录像机12来预览监控点实时视频的场景;也可以对接视频厂家的平台软件13,例如海康、大华的视频平台,通过视频软件平台13来向前端设备取实时码流。其中,网络摄像机11、网络硬盘录像机12、平台软件13支持rtsp协议。webapi接口包括mediastream、rtcpeerconnection、rtcdatachannel。
需要说明的是,通过rtsp协议将实时码流传输到流媒体服务器,包括rtsp客户端与rtsp服务端之间的交互过程:
rtsp客户端发送options请求,询问rtsp服务端有哪些方法可用,rtsp服务端做出回应;
rtsp客户端发送describe请求,要求获得流媒体格式、长度的信息,rtsp服务端做出回应,流媒体的信息通过sdp协议给出;
rtsp客户端发送setup请求,协商流媒体传输方式,并与rtsp服务端建立rtp通道;
rtsp客户端发送play请求,协商流媒体播放,rtsp服务端开始发送码流数据;
rtsp客户端发送teardown请求,关闭会话,停止播放。
通过上述实施例可知,本发明提供的基于rtsp协议的实时视频无插件预览方法及系统,至少实现了如下的有益效果:
1、本发明将rtsp协议作为切入点,在实现本发明的预览方法时,不用再关心视频设备需要提供的sdk软件开发工具包或者activex插件,因为由于厂家、设备型号、设备版本、移动端等因素的影响,sdk软件开发工具包也衍生出诸多版本,开发对接工作繁琐、重复,因此实现本发明时,只需要按照规则,提供视频设备rtsp协议的取流地址,再经过流媒体服务器的解码、编码、转发一系列过程,到客户端浏览器可直接解码播放,降低了工作难度和提高了效率。
2、本发明的预览方法不需要安装浏览器插件,如activex、adobeflashplayer,或者是浏览器扩展程序,并且支持跨浏览器,如支持chrome、firefox、opera,从而提供更多可选择性的实时视频预览方法,也无需进行浏览器的相关设置操作,便可实时预览,低延迟甚至可以是无延迟监控视频。
3、本发明基于rtsp协议的实时码流,经过解码、编码、转发这些操作,基本都是实时的,在服务器性能、网络状况均正常的情况下,测试视频播放的延迟可控制在1s左右。
4、使用本发明的预览方法及系统,开发者不需要sdk软件开发工具包,可以省去大量繁琐、重复的对接开发工作;
5、使用本发明的预览方法及系统,客户端浏览器不需要安装插件或扩展程序,使用方便快捷;
6、本发明的预览方法及系统支持跨浏览器,选择余地大;
7、本发明的预览方法及系统支持跨平台,如android/ios移动端使用上述浏览器,同样可以播放;
8、本发明的预览方法及系统低延迟,实时性较hls的方式要好。
虽然已经通过例子对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上例子仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。