基于视频关键帧的IP流调度系统及方法与流程

文档序号:11327093阅读:485来源:国知局
基于视频关键帧的IP流调度系统及方法与流程

本发明涉及一种基于视频关键帧的ip流调度系统及方法,属于多媒体及网络技术领域。



背景技术:

随着新媒体和融合媒体技术的发展,多家电视台、电台等媒体单位开通了互联网电视、电台平台,互联网电视、电台平台汇聚了多种源多媒体数据流,包括各级电视台、电台的音视频等多媒体直播信号,如卫视电视信号、地方台信号、互联网上的自媒体信号等,媒体单位需要利用一种调度系统,一方面可以对各种多媒体数据流进行分析、处理,另一方面可以根据需求将特定的多媒体数据流调度到目的终端,目的终端包括播控系统、传统播出系统、iptv平台、新媒体内容应用平台(网站、应用app、ott业务等),以为目的终端提供节目信号播出服务。



技术实现要素:

鉴于上述原因,本发明的目的在于提供一种基于视频关键帧的ip流调度系统及方法,能够对多种源多媒体数据流进行处理,并根据调度请求,将所需多媒体数据流调度到目的终端,调度灵活,功能强大。

为实现上述目的,本发明采用以下技术方案:

一种基于视频关键帧的ip流调度系统,包括调度命令处理模块、调度过程处理模块、数据流输入解析模块、数据流输出处理模块,

调度命令处理模块,用于接收调度命令请求,将解析出的调度命令请求发送至调度过程处理模块;该调度命令请求包括调度指令、频道信息,该调度指令包括调度,该频道信息包括源地址、目的地址、频道项;

调度过程处理模块,用于根据调度指令、频道信息,将源地址输入的多媒体数据流调度输出至该频道项对应的目的地址,

其中,源地址输入的多媒体数据流经数据流输入解析模块进行解析处理后,将处理后的完整数据帧保存入缓冲队列,缓冲队列从视频关键帧开始保存数据;

数据流输出处理模块从缓冲队列中读取数据,对数据进行合并打包处理后输出至目的地址。

所述源地址包括主流地址、备用地址、垫流地址,所述调度过程处理模块将主流地址输入的数据调度输出至目的地址,定时检测主流地址输入的数据是否有异常,若有异常,则切换至备流地址输入的数据调度输出至目的地址,并检测备流地址输入的数据是否有异常,若有异常,则切换至垫流地址输入的数据调度输出至目的地址。

所述数据流输入解析模块包括:

ts输入解析模块,用于接收并分析ts数据流,获得指定音视频pid号的音视频数据及时间戳信息;将获取的完整数据帧,保存入所述缓冲队列;

rtmp输入解析模块,用于完成与rtmp服务器之间的交互过程,接收并解析rtmp数据包,将获取的完整数据帧,保存入所述缓冲队列;

hls输入解析模块,用于完成与hls服务器之间的交互过程,接收并解析ts切片文件,将获取的完整数据帧,保存入所述缓冲队列。

所述数据流输出处理模块包括:

ts合成输出模块,用于从所述缓冲队列中获取数据,对获取的数据进行打包合成过程;

rtmp输出模块,用于完成与rtmp服务器之间的交互过程,从所述缓冲队列中获取数据,先将数据拆分成若干子rtmp数据包,然后将若干子rtmp数据包发送到rtmp服务器。

系统还包括配置模块,用于配置系统的监听端口号、支持调度的频道数,设置用户名和密码。

在当前源地址与下一源地址输入的数据流编码格式不同的情况下,需相应的调整数据流输出处理模块的相关协议信息及时间戳信息,使得目的地址对应的目的终端能够正确接收处理数据流。

基于上述ip流调度系统实现的ip流调度方法,包括:

s1:接收调度命令请求,该调度命令请求包括调度指令、频道信息;

s2:根据频道信息解析源地址、目的地址、频道项,根据调度指令解析调度指令类型,包括调度;

s3:将源地址输入的多媒体数据流调度输出至该频道项对应的目的地址。

所述步骤s3包括:s32:根据源地址输入的多媒体数据流类型,对该多媒体数据流进行相应的解析处理;

s33:解析后的完整数据帧保存入缓冲队列,从视频关键帧开始缓冲,缓冲1秒后可输出;

s34:从缓冲队列中读取数据,根据多媒体数据流的类型,进行相应的合成输出处理,输出至目的地址。

定时检测源地址输入的多媒体数据流是否存在异常,若存在异常,则切换至备用的源地址。

在当前源地址与下一源地址输入的数据流编码格式不同的情况下,相应的调整输出数据流的相关协议信息及时间戳信息,使得目的地址对应的目的终端能够正确接收处理数据流。

本发明的优点是:

1、本发明的系统及方法,能够对多种源多媒体数据流进行处理,并根据调度请求,将所需多媒体数据流调度到目的终端,调度灵活,功能强大;

2、本发明的系统及方法,能够实现多协议数据流的输入与处理,根据终端类型,将相应处理后的数据输出至目的终端;系统支持的ip流协议包括udpts流,rtmp流与hls直播流,经过调度和协议转换输出的ip流是udpts和rtmp流;

3、频道配置和管理灵活,易于扩展,可大幅降低投资成本。

附图说明

图1是本发明的调度系统组成框图之一。

图2是本发明的调度系统组成框图之二。

图3是本发明的调度方法流程图。

具体实施方式

以下结合附图和实施例对本发明作进一步详细的描述。

一、名词解释

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切片文件。

ip流:是指音视频数据经过编码、打包后,通过ip网络传输的直播数据流,包括udpts数据流,rtmp数据流和hls直播切片数据。

视频关键帧:是指mpeg-2编码的i帧,h.264编码的idr帧,解码器接收到视频关键帧后,不依赖于之前或之后的视频帧即可完全解码。

二、技术方案

如图1、2所示,本发明公开的基于视频关键帧的ip流调度系统,包括调度命令处理模块、调度过程处理模块、数据流输入解析模块、数据流输出处理模块、配置模块等。

调度命令处理模块,用于接收输入的调度命令请求,检查调度命令请求的合法性,并将合法的调度命令请求传输至调度过程处理模块。调度命令请求包括调度指令、频道信息等,调度指令包括调度、停止调度及获取频道状态三种。

于一具体实施例中,基于http协议的调度命令请求的表示形式为:http://ip:port/bv_ipswitcher?function=switchip,其中,ip:port字段表示调度系统的ip地址和端口号,bv_ipswitcher字段表示http访问路径,function=后面的字段表示具体的调度指令,调度指令包括调度switchip、停止调度stopchannel、获取频道状态getchannelruninfo。

根据调度命令请求所请求的内容,解析出频道信息,例如,根据http请求http://ip:port/bv_ipswitcher?function=switchip所请求的内容,解析出如下频道信息:

<?xmlversion=″1.0″encoding=″gbk″?>

<channel>1</channel>

<root>

<inputip>

<firstip>udp://224.1.1.100:7001</firstip>

<secondip>udp://224.1.1.100:7002</secondip>

<thirdip>udp://224.1.1.100:7003</thirdip>

</inputip>

<outip>udp://224.1.1.100:6000</outip>

</root>

其中,channel表示频道编号,inputip表示一组源地址,firstip表示源地址中的主流地址,secondip表示源地址中的备流地址,thirdip表示源地址中的垫流地址,outip表示目的地址,即,一个频道对应一组源地址(包括主流地址、备流地址、垫流地址)和一个目的地址。

调度过程处理模块,用于根据输入的调度命令请求,将源地址输入的源多媒体数据流调度到相应的目的地址;用于对源地址输入的多媒体数据流进行监控,当源地址输入的多媒体数据流发生异常时进行切换处理,具体包括:接收调度命令请求后,根据频道信息,将主流地址输入的多媒体数据流调度输出至本频道对应的目的地址,之后,每隔一定时间(100毫秒)检测主流地址输入的多媒体数据流是否有异常(数据包序号不连续、数据断流等),如有异常,自动将备流地址输入的多媒体数据流调度输出至本频道对应的输出地址;同理,如备流地址输入的多媒体数据流也有异常,自动将垫流地址输入的多媒体数据流调度输出到目的地址;如此循环,直到成功为止。如果当前调度输出的源地址不是主流地址,则定时检测主流地址输入的多媒体数据流是否已恢复正常,如已正常,自动切换为将主流地址输入的多媒体数据流调度输出至目的地址。

在上述源地址输入的源多媒体数据流调度到相应的目的地址过程中,源地址输入的多媒体数据流先经数据流输入解析模块处理,再经数据流输出处理模块处理,最后输出至具有目的地址的目的终端。

数据流输入解析模块,包括ts输入解析模块、rtmp输入解析模块、hls输入解析模块。数据流输出处理模块包括ts合成输出模块、rtmp输出模块。

ts输入解析模块,通过创建线程,用于接收ts数据流,分析ts数据流的pat表以获取要调度输出的音视频pid号,分析pmt表以获取音视频的编码格式(如h.264,mpeg2,aac,mp2,mp3,ac3等),得到指定音视频pid号的音视频数据及时间戳信息。获取到完整的一帧音视频数据包后,放入缓冲队列,供输出至相应的数据流输出处理模块。

rtmp输入解析模块,通过创建线程,用于完成与rtmp服务器之间的交互过程,包括建立连接,完成握手过程,发起rtmp播放命令以及异常处理(如,网络重连)等;正常连接后,接收rtmp数据包,解析rtmp数据,获取音视频数据包,获取到完整的一帧音视频数据包后,放入缓冲队列,供输出至相应的数据流输出处理模块。

hls输入解析模块,通过创建线程,用于完成与hls服务器之间的交互过程,包括定时从hls服务器下载m3u8文件,分析下载的文件,获取需要下载的ts切片文件,解析每个ts切片文件,获取到完整的音视频数据包后,放入到缓冲队列,供输出至相应的数据流输出处理模块。ts切片文件一般是10秒。

这里要说明的是,为了保证输出至目的终端的数据流能够使第三方的解码器正确解码(不出现卡顿,黑场和马赛克现象),上述各数据流输入解析模块在对输入的源数据进行相应的解析处理后,将完整的一帧音视频数据包放入缓冲队列,缓冲队列中的数据必须是从视频关键帧开始缓冲,视频关键帧前的数据被丢弃掉,缓冲时间需超过1秒,以保证输出数据的连续可靠性。

ts合成输出模块,通过创建线程,从缓冲队列中获取数据,用于完成对音视频数据流的打包合成过程,包括定时生成pat表及pmt表,对数据流添加相应的音视频编码信息(h.264,mpeg-2,aac,mp2,mp3,ac3等),调整时间戳为以与ts数据时间戳相适应的90khz为单位的时间戳,使其与ts数据的时间戳一致,并拆分以188字节为单位的ts数据包。

rtmp输出模块,通过创建线程,用于完成与rtmp服务器之间的交互过程,包括建立连接,完成握手,发起rtmp发布命令等过程,从缓冲队列中获取数据,先将数据包拆分成若干子rtmp数据包,然后将若干子rtmp数据包发送到rtmp服务器。

配置模块用于设置和加载调度系统的各项参数,包括系统的监听端口号、支持调度的频道数,设置用户名和密码(包括管理员的用户名和密码、各调度用户的用户名和密码等)等。

根据配置模块配置的支持调度的频道数,调度系统支持多个频道的同时调度过程,每个频道关联一个调度过程处理模块,根据各频道相对应的调度命令请求,通过相应的调度过程处理模块、数据流输入处理模块、数据流输出处理模块,实现各频道的多媒体数据流的调度过程。

根据调度命令请求,当同一目的地址的目的终端先后从不同源地址获取多媒体数据流时,需要进行相应的切换处理。具体的说,

对于当前源地址输入的数据流与下一源地址输入的数据流音视频编码格式不同,需调整相应的数据流输出处理模块的信息。例如,如当前源地址输入的数据流的视频编码为h.264,下一源地址输入的数据流的视频编码为mpeg-2;对于ts合成输出模块,需调整pmt信息,并立即生效,向目的地址发送下一源地址输入的数据之前先发送pmt数据包;对于rtmp输出模块,需调整音视频解码信息,向目的地址的编码器发送下一源地址的数据之前先发送音视频解码数据包。另外,源地址切换之前,还需要同步时间戳,调整下一源地址输入的音视频数据包的时间戳,使得输出的数据包时间戳呈线性增长。这样,在调度到下一源地址之前,实现了输出数据的第一帧是视频关键帧,调整了数据包的时间戳,使得时间戳呈线性增长,解码器接收到下一源地址的数据后,检测不到解码参数的变化或异常,实现正确解码(不出现卡顿,黑场和马赛克现象)过程。

进一步的,调度过程处理模块根据目的地址的优先级进行多媒体数据流的调度过程。

获取频道状态包括获取特定频道的累加播出时间、播出次数等,用于服务计费、大数据统计等。

如图3所示,基于视频关键帧的ip流调度方法,包括:

s1:接收调度命令请求,该调度命令请求包括调度指令、频道信息等;

s2:根据频道信息解析源地址、目的地址、频道项,根据调度指令解析调度指令类型,包括调度、停止调度、获取频道状态;

s3:对于调度指令类型为调度的指令,将源地址输入的多媒体数据流调度输出至该频道对应的目的地址。

具体包括:

s31:定时检测源地址输入的多媒体数据流是否存在异常,若存在异常,则切换至备用的源地址;

源地址包括主流地址、备流地址、垫流地址。当主流地址输入的数据流存在异常时,切换为备流地址输入数据流,若备流地址输入的数据流仍存在异常,则切换为垫流地址输入数据流,上述过程循环进行,直至切换为正常输入数据流的源地址为止。

s32:根据源地址输入的多媒体数据流类型,将该多媒体数据流经相应类型的数据流输入解析模块进行解析处理;

s33:解析后的完整数据帧保存入缓冲队列,从视频关键帧开始缓冲,缓冲1秒后可以输出;

s34:从缓冲队列中读取数据,根据多媒体数据流的类型,经相应类型的数据流输出处理模块进行相应的合成输出处理,输出至目的地址。

以上所述是本发明的较佳实施例及其所运用的技术原理,对于本领域的技术人员来说,在不背离本发明的精神和范围的情况下,任何基于本发明技术方案基础上的等效变换、简单替换等显而易见的改变,均属于本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1