本发明涉及一种支持多协议输入和输出的流媒体服务器系统,属于多媒体及网络技术领域。
背景技术:
随着新媒体、融合媒体业务的发展及多种终端的普及应用,对流媒体服务器的功能及性能提出了越来越高的要求。流媒体服务器输出的视频流需要支持pc机、智能移动设备(如安装android、ios系统的智能手机),iptv、ott等应用(要求输入udpts流)的播放。同时,为满足日益提高的用户体验,流媒体服务器需支持视频直播与点播,播放过程中截取当前画面,通过进度条预览小视频实现视频的拖拽定位等多种功能。
现有的流媒体服务器主要有以下几种:
windowsmediaserver流媒体服务器,其支持mms协议,随着绝大部分浏览器都支持adobeflashplayer,windowsmediaserver对应的windowmediaplayer插件的使用率已经不高,故windowsmediaserver流媒体服务器逐步淡出了国内业界的应用。
adobeflashmediaserver3.0/4.0是adobe提供的流媒体服务器,其支持rtmp的直播与点播应用,但是其输出的视频流仅能满足pc端的flash播放器的播放,无法支持hls流的播放。adobeflashmediaserver4.5及更高版本逐步支持hls流的应用,但其需要同时配置apachehttp服务器,部署相对复杂,成本也较高。adobeflashmediaserver的各版本都不支持hls,rtmp,udpts流的转发,也不支持视频流通过udpts组播的方式发送。
red5流媒体服务器是开源的流媒体服务器方案,其早期版本支持rtmp的直播与点播应用,高版本也支持hls流的应用,但其不支持hls,rtmp,udpts流的转发,也不支持视频流通过udpts组播的方式发送,另外,其系统稳定性难以保证,不适于商业领域的推广应用,更适于作为流媒体服务器技术的研究对象。
技术实现要素:
鉴于上述原因,本发明的目的在于提供一种支持多协议输入和输出的流媒体服务器系统,支持多种协议的输入、多种协议的输出,支持多种终端的流媒体播放,功能强大,使用方便,提高用户体验。
为实现上述目的,本发明采用以下技术方案:
一种支持多协议输入和输出的流媒体服务器系统,包括:协议分析模块、数据流分析处理模块,
定义客户端发送的请求消息的访问规则,该请求消息中包括协议类型、应用类型,协议类型包括rtmp、http协议,应用类型包括直播、点播,对于http协议的直播应用,请求消息中包括请求的文件名,对于点播应用,请求消息中包括请求的文件名及其对应的物理路径,
协议分析模块,用于对接收的请求消息按照访问规则进行解析处理,根据解析结果,将请求消息发送至相应的数据流分析处理模块进行相应的处理;
数据流分析处理模块包括rtmp处理模块、直播切片生成模块、点播文件实时切片模块、m3u8文件处理模块、ts文件处理模块、flv文件处理模块、mp4文件处理模块,
rtmp处理模块,用于处理rtmp直播流的发布,直播流的播放,点播文件的播放,
直播切片生成模块,用于根据接收的rtmp直播流,生成切片文件,
点播文件实时切片模块,用于根据hls请求消息,对mp4、flv文件进行实时切片处理,
m3u8文件处理模块,用于处理hls点播与直播的请求消息,
ts文件处理模块,用于处理ts文件的点播与直播的请求消息,
flv文件处理模块,用于处理flv文件的点播与直播的请求消息,
mp4文件处理模块,用于处理mp4文件的点播与直播的请求消息。
所述应用类型还包括中转,系统还包括数据流中转处理模块,其包括udpts中转模块、hls中转模块、rtmp中转模块,分别用于从第三方系统获取udpts数据流、hls切片文件、rtmp直播数据流,获取的数据均保存为切片文件,供客户端访问获取。
支持多协议输入和输出的流媒体服务器系统,还包括udpts输出模块,用于将rtmp数据流与hls中转模块、rtmp中转模块、udpts中转模块中转的数据流,以udpts数据流的方式转发,以支持各种编码器的输入,机顶盒的输入。
所述直播切片生成模块根据接收的rtmp直播数据流,判断为视频关键帧数据时,开始生成flv文件,接收数据的过程中,每收到新的视频关键帧就判断已收到的视频时长是否已到达了预定的切片时长,若到达,停止生成flv文件,将flv文件转换为对应的ts文件与支持hls多码流的64k音频ts文件;按照上述过程持续生成切片文件,当生成的切片文件超过三个,开始生成hls对应的m3u8文件。
点播文件实时切片模块接收请求m3u8文件的请求消息,确定该文件对应的物理路径,判断该路径下是否已经存在该文件,若存在则读取该m3u8文件,返回客户端,若文件不存在,则生成m3u8文件,然后返回给客户端;
点播文件实时切片模块接收请求切片文件的请求消息,判段该文件对应的物理路径下是否已经存在该切片文件,若存在,则读取该切片文件,返回给客户端,若不存在,则实时生成切片文件,再返回给客户端。
生成m3u8文件及切片文件的过程中,线程加锁处理。
对于http协议的请求消息,还包括实时视频截图请求及截图开始时间点,所述数据流分析处理模块还包括图片文件处理模块,其用于根据实时视频截图请求,从截图开始时间点对请求的文件进行截图,将生成的图片文件保存于一临时目录,并返回给客户端。
支持多协议输入和输出的流媒体服务器系统,还包括文本与html处理模块,对于应用类型为点播、请求的文件为文本文件的请求消息,根据请求消息确定物理路径,从该物理路径下读取请求的文本文件,并返回给客户端。
对于http协议的请求消息,还包括获取预览小视频的请求及小视频开始时间点,
若请求消息请求的文件类型为flv文件,所述flv文件处理模块,根据请求消息确定文件及其物理路径,根据开始时间点,以切片方式生成flv切片文件,将该flv切片文件返回给客户端;
若请求消息请求的文件类型为mp4文件,所述mp4文件处理模块,根据请求消息确定文件及其物理路径,根据开始时间点,以切片方式生成mp4切片文件,将该mp4切片文件返回给客户端。
支持多协议输入和输出的流媒体服务器系统,还包括配置模块,用于配置系统运行的各项参数,每种应用类型对应一组参数,参数包括应用类型,对应的物理路径,是否支持rtmp输出,是否支持hls输出,是否支持m3u8,是否支持flv,是否支持hls64k音频流输出,是否支持获取预览小视频的输出,是否支持视频实时截图,配置udpts输出地址,定义切片文件时长,配置中转发布点,定义最大并发连接数,定义运行计划,配置访问策略。
本发明的优点是:
1、本发明的流媒体服务器系统支持多协议输入,包括支持标准的rtmp数据流的发布直播,hls数据流的直播输入,udpts流的输入;
2、本发明的流媒体服务器系统支持多协议输出,包括支持rtmp数据流的直播与点播输出,hls数据流的直播与点播输出,udpts流的输出,支持http1.1的文件下载或视频文件播放;rtmp数据流的点播输出支持mp4,flv文件的输出;hls数据流的点播输出支持对mp4,flv文件的实时切片,实时截图;支持flash播放视频的同时,在进度条请求预览进度的小视屏的输出;
3、本发明的流媒体服务器系统输出的音视频流支持多种终端的播放,包括pc端adobeflash播放器的播放,安装ios、android系统的智能终端,其内置视频播放器的播放;支持标准udpts输入的编码器、机顶盒的播放。
4、本发明的流媒体服务器系统,能够将h.264格式的ts流或rtmp直播数据流或流媒体文件,统一转换为适于不同类型终端应用的不同协议、不同码流和不同封装格式的数据流,实现同一视频流或节目源在不同类型终端的自适应播放,功能强大,提高用户体验。
附图说明
图1是本发明的系统组成框图。
具体实施方式
以下结合附图和实施例对本发明作进一步详细的描述。
一、名称解释
ts数据流:即传送流(transportstream),传送流由一道或多道节目数据流组成,每道节目数据流由一个或多个原始流和一些其他流复合在一起,包括视频流、音频流、节目特殊信息流(如ts流中的psi信息表)和其他数据包。udpts:即以udp组播或单播方式发送已经打包完成的ts数据包。
rtmp:即实时消息传输协议(realtimemessagingprotocol),包括rtmp基本协议及rtmpt/rtmps/rtmpe等多种变种协议,主要用于在flash/air平台和支持rtmp协议的流媒体/交互服务器之间实现音视频等数据通信。
hls:即httplivestreaming,是一种苹果公司的动态码率自适应技术,主要用于pc和苹果终端的音视频服务。其包括一个m3u8索引文件,ts媒体分片文件和key加密串文件,其工作原理是把整个数据流分成若干小的基于http协议的文件下载,每次只下载一部分,当多媒体数据流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。
hls直播切片文件:是指每个小的能够独立播放的音视频文件,一般为ts数据文件,也称ts切片文件。
二、技术方案
如图1所示,本发明公开的支持多协议输入和输出的流媒体服务器系统,包括:配置模块、协议分析模块、数据流分析处理模块、数据流中转处理模块、udpts输出处理模块。
本发明中,为便于系统部署与维护,各种协议的数据流的输入与输出均使用同一个监听端口号,这种情况下,为满足rtmp与http两种协议的访问,对客户端发送的请求消息定义如下访问规则:
1、rtmp请求消息
rtmp直播请求的请求消息为:
rtmp://ip:port/application/streamname
rtmp点播请求的请求消息为:
rtmp://ip:port/application/streamname/dir/filename.***
其中,application为应用类型,包括直播live、点播vod、中转relay三种,中转是指音视频数据来自第三方系统的udpts流、hls数据流、rtmp数据流;streamname为发布点;dir为请求资源在服务器系统中保存的物理路径(如,d:\dir1\dir2),filename为请求资源的文件名,***为文件后缀类型(如,可以是fiv、mp3、mp4)。
2、http请求消息
http直播请求的请求消息为:
http://ip:port/application/streamname/filename.***
http点播请求的请求消息为:
http://ip:port/application/streamname/dir/filename.***
http视频实时截图的请求消息为:
http://ip:port/application/streamname/dir/filename.***/grabpic.jpg?start=time
http获取预览小视频的请求消息为:
http://ip:port/application/streamname/dir/filename.***/smallvideo.flv?start=time
其中,application为应用类型,streamname为发布点,dir为请求资源在服务器系统中保存的物理路径,filename为请求资源的文件名,***是文件后缀类型(如,可以是flv、mp4),grabpic.jpg为视频实时截图的请求,smallvideo.flv为获取预览小视频的请求。
请求消息举例如下:
1)直播
假设编码器向服务器(ip地址为192.168.1.30,端口号为1935)发布rtmp数据流,应用类型为直播live,发布点名为live201,即,向服务器输入rtmp直播数据流,则,
rtmp直播请求的请求消息为:
rtmp://192.168.1.30:1935/live/live201
hls视频播放的请求消息为:
http://192.168.1.30:1935/live/live201/video.m3u8
hls音频播放的请求消息为:
http://192.168.1.30:1935/live/live201/audio.m3u8
hls包括音视频的多码流请求消息为:
http://192.168.1.30:1935/live/live201/main.m3u8
hls下载切片文件的请求消息为:
http://192.168.1.30:1935/live/live201/live201_201605010935_video_seq_1.ts
http://192.168.1.30:1935/live/live201/live201_201605010945_video_seq_2.ts
……
http://192.168.1.30:1935/live/live201/live201_201605010955_video_seq_n.ts
直播切片文件的保存路径与文件名的生成的规则定义如下:切片文件(flv文件与ts文件)保存于一临时目录(可由配置文件指定),
临时目录的物理路径为:临时目录(temp)\应用名\发布点名\切片文件名,如,d:\temp\live\live201\filename\。
切片文件中视频文件的命名规则是:发布点名_时间_video_seq_id.ext,
切片文件中音频文件的命名规则是:发布点名_时间_video_seq_id.ext,其中ext为文件后缀,可以是flv或ts,id为切片序号,从1开始递增。利用切片文件的保存路径与文件名的命名规则,服务器系统可以根据http请求的内容快速找到所请求的文件。
rtmp数据流可以支持adobeflashplayer播放器的播放,hls数据流可以支持安装andorid、ios系统等多种终端设备内置播放器的播放。
2)点播
假设服务器的ip地址为192.168.1.30,端口号为1935,应用类型为点播vod,发布点名为vod1,文件在服务器中保存的物理路径为gaoqing,文件名为demo.mp4,则,
rtmp点播请求的请求消息为:
rtmp://192.168.1.30:1935/vod/vod1/gaoqing/demo.mp4
hls视频播放的请求消息为:
http://192.168.1.30:1935/vod/vod1/gaoqing/demo.mp4/video.m3u8
hls音频播放的请求消息为:
http://192.168.1.30:1935/vod/vod1/gaoqing/demo.mp4/audio.m3u8
hls包括音视频的多码流请求消息为:
http://192.168.1.30:1935/vod/vod1/gaoqing/demo.mp4/main.m3u8
hls下载切片文件的请求消息为:
http://192.168.1.30:1935/vod/vod1/gaoqing/demo.mp4/video_seq_1.ts
http://192.168.1.30:1935/vod/vod1/gaoqing/demo.mp4/video_seq_2.ts
……
http://192.168.1.30:1935/vod/vod1/gaoqing/demo.mp4/video_seq_n.ts
其中,点播文件的保存路径是:点播目录(vod)\应用名\发布点名\文件名,如,d:\vod\vod1\filename\。
视频实时截图的请求消息为:
http://192.168.1.30:1935/vod/vod1/gaoqing/demp.mp4/grabpic.jpg?start=10.0
其中,start=10.0表示在demp.mp4视频的第10秒开始截图。
flash播放器获取预览小视频的请求消息为:
http://192.168.1.30:1935/vod/vod1/gaoqing/demp.mp4/smallvideo.flv?start=10.0
其中,start=10.0表示在demp.mp4视频的第10秒开始获取小视频。
(一)配置模块
配置模块用于配置和加载系统的各项参数,每种应用类型对应一组独立的参数。参数包括:应用类型,对应的物理路径,是否支持rtmp输出,是否支持hls输出,是否支持m3u8,是否支持flv,是否支持hls64k音频流输出,是否支持获取预览小视频的输出,是否支持视频实时截图,配置udpts输出地址,定义切片文件时长,配置中转发布点,定义最大并发连接数,定义运行计划,访问策略等。其中,运行计划定义了应用类型对应的开始和结束的时间区间,访问策略可以配置是否启用ip限制,文件是否加密,rtmp推流是否要求用户名和密码认证等。配置完成后,根据各项参数,生成配置文件,于一具体实施例中,配置文件如下:
(二)协议分析模块
根据接收的请求消息,判断请求消息是http请求还是rtmp请求。具体的说,根据请求消息的前200字节数据,若其中包含post或get字符串,判断为http请求,否则为rtmp请求。
对于http请求,接收完整的http请求的头信息,确定http头信息中包含符合访问规则的请求消息部分,确定请求资源的物理路径,确定请求资源的文件名及文件后缀类型,根据分析处理结果,将相应的请求消息发送至相应的数据流分析处理模块;对于rtmp请求,发送至rtmp处理模块。
(三)数据流分析处理模块
包括rtmp处理模块、直播切片生成模块、m3u8文件处理模块、ts文件处理模块、flv文件处理模块、mp4文件处理模块、文本与html处理模块、图片文件处理模块、点播文件实时切片模块。
1、rtmp处理模块
rtmp处理支持rtmp直播流的发布,直播流的播放与点播文件的播放。rtmp处理模块用于与请求的客户端进行rtmp协议的握手连接,连接后对rtmp命令进行处理,根据rtmpconnect命令判断客户端的请求类型,请求类型包括直播发布,直播播放与点播文件播放三种,然后根据请求类型分别进行处理,具体如下。
对于rtmp直播发布的请求,首先进行授权认证处理,包括请求的客户端ip地址是否通过ip认证,请求的发布点是否通过用户名与密码的验证认证等,若认证失败,则断开rtmp连接,认证成功,则接收并处理音视频数据流,即将接收的音视频数据保存入缓冲队列中,缓冲的数据一方面用于实时发送至客户端播放,另一方面,发送至直播切片生成模块,用于生成切片数据,以支持各种基于hls协议的各终端的直播播放。
针对rtmp直播播放的请求,首先进行授权认证处理,包括ip认证、用户名与密码认证等,认证通过后,判断请求的发布点是否存在,若不存在,则断开rtmp连接,若存在,则向rtmp发布点登记一个rtmp流播放端,用于接收该发布点的音视频数据流,接收的音视频数据保存入缓冲队列中,用于实时发送到客户端播放。
若应用类型为中转,需要判断请求消息中的发布点对应的切片文件是否已经存在,若不存在则断开rtmp连接,若存在则读取切片文件,并将切片文件转换为rtmp数据流发送到请求的客户端。
rtmp点播文件播放的请求,首先进行授权认证处理,包括ip认证、用户名与密码认证等,认证通过后,根据请求的文件在服务器中保存的物理路径,判断该物理路径下是否存在所请求的文件,若不存在则断开rtmp连接,若存在,则于该物理路径下找到所请求的文件,判断请求的文件是否为符合rtmp协议的文件,即判断请求的文件是否是mp4或flv文件,若均不是则断开连接,若是其中一种类型的文件,继续判断视频文件的视频编码是否是h.264或vp6,音频编码是否是aac或mp3,若编码不符合rtmp协议则断开rtmp连接,若编码符合rtmp协议,则读取出请求的文件,将mp4或flv文件的音频帧与视频帧封装为rtmp数据包发送给客户端。在rtmp数据流的播放过程中,rtmp处理模块支持rtmp的seek,pause/resume命令。
2、直播切片生成模块
直播切片生成模块用于根据接收的音视频数据,生成切片文件。前述rtmp处理模块对于rtmp直播发布的音视频数据,保存入缓冲队列,并拷贝到直播切片生成模块。直播切片模块生成根据接收的音视频数据,生成切片文件。具体的说,直播切片生成模块根据接收的音视频数据,判断是否为视频关键帧数据,若不是则丢弃,以避免播放过程中出现马赛克现象,接收到视频关键帧后,开始生成flv文件,在持续接收音视频数据的过程中,每收到新的视频关键帧就判断已收到的视频时长是否已到达了定义的切片时长(如10秒),若到达预定的切片时长,停止生成flv文件,然后根据配置文件中配置的切片时长(如上述xml文件中的seqlen字段及其取值)的要求快速转换为对应的ts文件与支持hls多码流的64k音频ts文件;按照上述过程持续生成切片文件,当生成的切片文件超过三个,开始生成hls对应的m3u8文件,生成的切片文件保存入临时目录下,提供安装android、ios系统的多种智能终端播放hls直播流。
3、点播文件实时切片模块:
点播文件实时切片模块用于根据客户端的hls请求消息,对mp4与flv文件进行实时切片处理,以满足多种终端播放的要求。利用点播文件实时切片模块,用户无需为了支持多种终端的播放而做额外的切片管理工作,如调用第三方工具对视频文件进行切片,对历史切片做删除处理等。
点播文件实时切片模块接收hls请求消息后,判断请求的是m3u8文件,根据请求消息确定该文件对应的物理路径,根据点播切片文件的命名规则与物理路径,判断该路径下是否已经存在m3u8文件,若存在则读取m3u8文件,以http响应消息的方式返回客户端,若文件不存在,则根据文件时长与文件关键帧的索引数据生成m3u8文件,然后将生成的m3u8文件返回给客户端。为了保证效率,生成m3u8文件的过程中,点播文件实时切片模块加锁处理,以保证仅通过一个线程生成m3u8文件,m3u8文件生成后,其它线程访问时读取即可。
若请求的是m3u8文件中的切片文件(ts文件或flv文件),点播文件实时切片模块先根据点播切片文件的命名规则与物理路径,判断临时目录下是否已经存在该切片文件,若已存在,则读取该切片文件,并以http响应消息的方式返回给客户端,若不存在,则实时生成切片文件,再以http响应消息的方式返回给客户端。为了保证效率,每个切片文件的生成过程中均做加锁处理,切片文件生成时,无需做解码处理,相当于文件拷贝操作,能够满足实际的应用需求。
4、m3u8文件处理模块
m3u8文件处理模块用于处理hls点播与直播索引的请求。m3u8文件处理模块根据请求消息判断所请求的m3u8文件,应用类型是直播live还是点播vod;若应用类型为直播,则根据直播切片文件的保存路径与文件名规则,确定m3u8文件对应的物理路径,找到切片文件对应的临时目录,读取请求的m3u8文件;若请求的文件存在,则以http响应消息的方式返回给客户端,若不存在则返回失败。若应用类型为点播,则进入点播文件实时切片模块进行相应处理。
5、ts文件处理模块
ts文件处理模块用于处理ts文件的点播与直播请求。ts文件处理模块,根据请求消息判断所请求的ts文件,应用类型是直播还是点播。
若应用类型为直播live,则根据直播切片文件的保存路径与文件名规则,确定ts文件对应的物理路径,找到切片文件对应的临时目录,读取请求的ts文件;若请求的文件存在,则以http响应消息的方式返回给客户端,若不存在则返回失败。
若应用类型为点播,则根据文件命判断是正常的完整文件访问还是切片文件访问(切片文件名包含seq_id字段)。如果是正常的完整文件访问,则根据文件的物理路径,找到对应的请求文件,以http响应消息的方式返回给客户端,若找不到,则返回失败;如果是切片文件访问,则进入点播文件实时切片模块进行相应处理。
6、flv文件处理模块
flv文件处理模块用于处理flv文件的点播与直播请求。flv文件处理模块根据请求消息判断所请求的flv文件,应用类型是直播、点播还是获取预览小视频。
若应用类型是直播,则根据直播切片文件的保存路径与文件名规则,确定flv文件对应的物理路径,找到切片文件对应的临时目录,读取请求的flv文件,若请求的文件存在,则以http响应消息的方式返回给客户端,若不存在则返回失败。
若应用类型是获取小视频,则根据请求消息确定文件及其物理路径,根据请求消息中的开始时间点与时长,以切片方式生成flv切片文件并保存于临时目录,将该flv切片文件以http响应消息的方式返回给客户端。
若应用类型是点播,则根据请求消息中的文件名称,判断访问的是正常的完整文件还是切片文件。对于正常的完整文件,根据请求消息中的物理路径,找到所请求的文件,若文件存在则以http响应消息的方式返回给客户求端,若不存在则返回失败;对于切片文件,进入点播文件实时切片模块进行相应处理。
7、mp4文件处理模块
mp4文件处理模块用于处理mp4文件的点播与直播请求。mp4文件处理模块根据请求消息所请求的mp4文件,应用类型是获取预览小视频还是点播。
若应用类型是获取小视频,则根据请求消息确定文件及其物理路径,根据请求的开始时间点与时长,以切片方式生成mp4切片文件并保存于临时目录,将mp4切片文件以http响应消息的方式返回给客户端。
若应用类型是点播,则根据请求消息确定文件对应的物理路径,从该物理路径下读取请求的文件,若文件存在则以http响应消息的方式返回给客户端,若不存在则返回失败。
8、文本与html处理模块:
文本与html处理模块用于对应用类型为点播的文本文件(html,htm,shtml,txt,xml等)进行处理。文本与html处理模块根据请求消息确定物理路径,从该物理路径下读取请求的文件,若文件存在则以http响应消息的方式返回给客户端,若文件不存在则返回失败。
9、图片文件处理模块:
图片文件处理模块用于对应用类型为直播、点播的图片文件(jpg,jpeg,gif,ico文件)进行处理。图片文件处理模块根据请求消息判断是否包含视频实时截图的请求,若包含了视频实时截图请求,则根据请求消息确定物理路径,根据截图请求的开始时间点实时解码,将生成的图片文件保存到临时目录,将保存的图片文件以http响应消息的方式返回给客户端。
(四)数据流中转处理模块
数据流中转处理模块包括udpts中转模块、hls中转模块、rtmp中转模块。
udpts中转模块用于从第三方系统获取udpts数据流,并以切片文件的形式保存,最终按照统一的访问规则接受不同客户端的访问,如rtmp请求,hls请求等。用户在配置文件中配置的中转发布点(例如上述xml文件中的relaymap字段及其取值)为每个需要中转的udpts(如udp://224.1.1.100:6000)定义一个对应的发布点名称(如relay1)。中转模块启动后即开始接收第三方系统发送的音视频数据,接收到第一个视频关键帧数据后,开始以切片方式保存为flv文件,在持续接收音视频数据的过程中,判断是否为视频关键帧,如果是关键帧,且保存的flv文件时长已经超过预定的切片时长,则将flv切片文件转换为ts文件。当生成的切片文件数超过三个后,开始生成m3u8文件。文件命名与保存路径规则遵循前述直播切片文件的保存路径与文件名称规则。
hls中转模块用于从第三方系统获取hls切片文件,并以切片文件的形式保存,最终按照统一的访问规则接受不同客户端的访问,如rtmp请求,hls请求等。用户在配置文件中配置的中转发布点(如上述xml文件中的relaymap字段及其取值)为每个需要中转的hls(如http://192.168.1.30:1935/live/livel/video_m3u8)定义一个对应的发布点。中转模块每下载一个ts文件后,将ts文件转换为flv文件,下载成功超过三个切片文件后,开始生成m3u8文件。文件命名与保存路径规则遵循前述直播切片文件的保存路径与文件名称规则。
rtmp中转模块用于从第三方系统获取rtmp直播数据流,并以切片文件的形式保存,最终以统一的访问规则接受不同客户端的访问,如rtmp请求,hls请求等。用户在配置文件中配置的中转发布点(如上述xml文件中的relaymap字段及其取值)为每个需要中转的rtmp(如rtmp://192.168.1.30:1935/live/livel)定义一个对应的发布点。
rtmp中转模块根据用户的配置,启动后开始以rtmpplay命令的模式从rtmp服务器读取视音频数据。视音频数据先保存为flv文件,然后将保存成功的flv文件转换为ts文件,切片文件数量超过三个后,开始生成m3u8文件。文件命名与保存路径规则遵循前述直播切片文件的保存路径与文件名称规则。
(五)udpts输出处理模块
udpts输出模块用于将rtmp数据流与hls中转模块、rtmp中转模块、udpts中转模块中转的数据流,以udpts数据流的方式转发,以支持不同厂商的编码器输入,机顶盒输入。预先配置udpts输出模块的输入源与输出的目的地址,输入源是指流服务器系统对应的应用与发布点。该模块启动后自动搜索最新已经生成的切片文件,然后读取切片文件,通过ts打包,发送到目标地址。该模块的配置实例可参见上述xml文件中的outputudps字段及其取值。
以上所述是本发明的较佳实施例及其所运用的技术原理,对于本领域的技术人员来说,在不背离本发明的精神和范围的情况下,任何基于本发明技术方案基础上的等效变换、简单替换等显而易见的改变,均属于本发明保护范围之内。