多编码格式节目流的自适应切换方法及系统的制作方法_2

文档序号:8447731阅读:来源:国知局
,该步骤具体为:下载每个组当中的第一个TS片段并进行解析,获取TS包中的PMT表,从PMT表中解析出每组对应的音视频编码格式以及TS片段的大小。进一步的,下载每个组当中的第一个TS片段并进行解析,下载大小为188B,对188B的数据进行解析,如果不包含PMT表,则继续下载188B,直到TS片段中包含PMT表。
[0033]例如,下载A1、A2、A3这三个分组当中描述的第一个TS片段,下载大小为188B,将这188B的数据进行解析,如果不包含PMT表,则继续下载188B,直到包含PMT表,然后从PMT表中解析出Al、A2、A3分组对应的音视频编码格式Gl、G2、G3以及TS片段的大小S1、S2、S3(S1〈S2〈S3)。
[0034]同时,由于不同带宽的节目流的TS片段数据大小不一样,而大小不一样TS片段的播放时间却相同,那么对于数据大的TS片段下载时间就长,播放时间会短,会造成卡顿的问题,故在该实施例中,对带宽大的分组中的TS片段进行分割,采用最小TS片段的大小值,将其他组TS片段分割成多段,以便使其他分组的TS片段可以分段下载,避免卡顿的问题。例如,根据S1、S2、S3的大小,按照SI的大小为每组的TS片段来分段。假设SI大小为2M,S2大小为5M,S3大小为7M,贝丨J S2分成2M、2M、1M的大小,S3分成2M、2M、2M、1M。
[0035]S30:提供两个解码器,分别为第一解码器和第二解码器,创建两个线程,分别为第一线程和第二线程。
[0036]由于不同节目流的编码格式不一样,如果只采用一个解码器,则解码器在解码格式发生变化时必须进行重置,这样就会发生问题。该实施例中,使用双编码器,同时采用双线程,第一线程当中等待接收第二线程发送来的通知,在第二线程当中等待第一线程发送来的通知,避免单个解码器会发生问题的情况。
[0037]S40:由第一线程采用带宽最小组的音视频编码格式对第一解码器进行初始化,并下载带宽最小组中的TS片段并注入第一解码器,将第一解码器绑定的显存窗口设置为顶层进行播放。
[0038]在设置双解码器及双线程之后,首先由第一线程根据分组获取带宽最小的分组,并利用该分组的参数来初始化第一解码器,初始播放最低带宽的节目流可以保证在网速情况不佳时能够更好的播放。具体的,第一线程根据最小带宽查找到对应的分组,根据分组解析出对应的音视频编码格式来初始化第一解码器,若第一解码器为创建状态则销毁重建,并绑定显存窗口,同时开始下载分组中的第一个TS片段,并注入到第一解码器开始播放,并将绑定的显存窗口设置为顶层。这样就完成第一解码器的初始化设置和播放。
[0039]S50:由第一线程实时获取当前网络速度,计算当前网络速度所适配的带宽,若所适配的带宽与第一解码器当前带宽不符,则第一线程停止下载TS片段且记录下载位置,并通知第二线程。
[0040]在播放过程当中,由于网络环境的变化,网络速度会发生变化,如果当前网络速度良好,则可以播放更高带宽和质量的节目流,需要自适应的切换到带宽高的节目流进行播放。故该实施例中,第一线程实时获取当前网络速度,计算当前网络速度所适配的带宽,若所适配的带宽与第一解码器当前带宽不符,则说明需要进行自适应的切换带宽高的节目流,由于带宽高的节目流编码格式不同,为避免出现问题,则第一线程停止下载TS片段且记录下载位置,并通知第二线程,由第二线程来进行切换和播放。
[0041]S60:由第二线程采用所适配带宽对应组的音视频编码格式对第二解码器进行初始化,由记录的下载位置继续下载所适配带宽对应组中的TS片段并注入第二解码器,并在第一解码器缓存为空时将第二解码器绑定的显存窗口设置为顶层进行播放。
[0042]第二线程接到通知后,开始对第二解码器进行初始化设置,采用所适配带宽确定对应的分组,根据分组解析出对应的音视频编码格式来初始化第二解码器,若第二解码器为创建状态则销毁重建,并绑定显存窗口,同时开始下载分组中的第一个TS片段,并注入到第二解码器,由于此时第一解码器缓存中还有数据未播放完毕,为实现整段数据播放的完整性,实现无缝切换,则要在第一解码器缓存为空时将第二解码器绑定的显存窗口设置为顶层进行播放。这样,自适应的切换另一解码格式的节目流由第二解码器完成,第一解码器不需要重置,由于一个TS片段播放时间大概是10s,而初始化解码器只需要在500ms以内,因此在第一解码器没有空之前,第二解码器已经初始化完毕,能够随时播放,这样就实现了自适应的无缝切换,从而避免导致播放不连贯、跳帧或者视频画面停顿等现象的发生,大大保证了高标清节目流的切换,给用户观看带来极大便利,提高用户的体验。
[0043]S70:由第二线程继续实时获取当前网络速度,计算当前网络速度所适配的带宽,若所适配的带宽与第二解码器当前带宽不符,则第二线程停止下载TS片段且记录下载位置,并通知第一线程。
[0044]同样,在第二线程播放时,也实时的获取监测当前网络速度,计算当前网络速度所适配的带宽,若所适配的带宽与第二解码器当前带宽不符,则说明需要进行自适应的切换带宽高的节目流,则第一线程停止下载TS片段且记录下载位置,并通知第一线程,由第一线程来进行切换和播放。
[0045]S80:由第一线程采用所适配带宽对应组的音视频编码格式对第一解码器进行初始化,由记录的下载位置继续下载所适配带宽对应组中的TS片段并注入第一解码器,并在第二解码器缓存为空时将第一解码器绑定的显存窗口设置为顶层进行播放。
[0046]第一线程执行之前第二线程切换时的过程,最终完成自适应的切换播放,不需要第二解码器重置,这样两个线程和两个播放器,在编码格式不同需要切换时,由未播放的一组进行切换播放,在使用的一组不需要进行重置,这样就实现了自适应的无缝切换,从而避免导致播放不连贯、跳帧或者视频画面停顿等现象的发生,大大保证了高标清节目流的切换,给用户观看带来极大便利,提高用户的体验。
[0047]该多编码格式节目流的自适应切换方法,将节目流按照带宽和编码格式进行分组,提供两个解码器同时创建双线程,根据网络速度确定适配的带宽进行切换,在编码格式不同需要切换时,由未播放的一组进行切换播放,在使用的一组不需要进行重置,这样就实现了自适应的无缝切换,从而避免导致播放不连贯、跳帧或者视频画面停顿等现象的发生,大大保证了高标清节目流的切换,给用户观看带来极大便利,提高用户的体验。
[0048]同时,对于带宽大的分组中的TS流分段下载,进一步避免了发生卡顿的问题,给用户观看带来进一步的便利,更加提高用户的体验。
[0049]此外,本发明还提供一种多编码格式节目流的自适应切换系统,该多编码格式节目流的自适应切换系统包括:
[0050]节目流分组单元,将节目流按照带宽大小分成多个组,每个组的音视频编码格式都不同。
[0051]由于目前同一个节目存在多种音视频编码格式的节目流,且不同音视频编码格式的节目流的带宽也不相同,多种编码格式和带宽的节目流是穿插着进行传输的,这样编码格式会不时发生改变,解码器要不断的进行重置使音视频解码中断,就会导致播放不连贯、跳帧或者视频画面停顿等现象发生。故在该实施例中,节目流分组单元首先将节目流按照编码格式和带宽分成多个组,每个组对应一种编码格式和带宽,使节目流能够按组进行区分。例如,将节目流分成三个组,分组为Al、A2、A3,对应的带宽分别为B1、B2、B3 (B1<B2<B3),三个分组的音视频编码格式和带宽都不相同。
[0052]在进一步的实施方式中,节目流分组单元获取播放的URL (HLS协议的),根据URL下载节目流描述文件,并根
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1