一种在线播放缓冲***和方法
技术领域
本发明涉及一种在线播放缓冲***和方法,具体地,涉及一种在线http播放流媒体缓冲***和方法,属于流媒体播放领域。
背景技术
随着互联网的普及,互联网速度的提升,三网融合的趋势下,互联网的速度正在快速提升,人们的视听习惯正在快速的从下载观看转换成在线观看,在线播放(play online)是一种视频播放形式,指不用单独地把视频下载到本地电脑而可以直接在线观看的一种播放形式。互联网在线视频播放上传的服务网站能够支持上传视频,实现用户自己的需求,例如通过上传的视频秀自己、把有意义的视频上传到互联网,一方面可以和朋友一起分享信息,一方面也能通过视频和其它人进行交流,也可以将一些教学视频上传到互联网,让别人查阅学习,还可以上传一些娱乐类视频,例如可以上传电视剧剧集、电影、明星的演唱会,娱乐节目视频,供用户观看,也可以将当天发生的一些新闻或者用户经历过并拍摄下来的重大事件上传到互联网,进而来满足用户们的不同需求。
近年来,在线播放技术深入到互联网电视、iptv等视听产品。然而,这些产品目前还在试商用阶段,很多产品存在在线播放起播时间过长、不能合理利用有效带宽,跳转后响应时间过长等问题,严重影响了观众的视听体验。
发明内容
鉴于以上的原因,本发明旨在提供一种在线播放视频缓冲和预缓冲机制,能有效解决开播时间过慢,跳转相应过慢,缓冲效果不理想等问题,并能有效利用用户带宽。为此,本发明提出了以下技术方案:
一种在线播放缓冲***,由预缓冲模块、视频信息分析模块、播放控制模块和状态交互模块构成,其特征在于:上述预缓冲模块对接收的音视频流进行预缓冲;上述视频信息分析模块从预缓冲模块读取视频数据进行分析,得到视频文件中各个音视频流的码率信息,并将信息传递给播放器控制模块;播放控制模块得到音视频码率信息后,对播放器的码流缓冲区进行设置,所述播放控制模块对播放器的码流缓冲区的设置包括视频码流缓冲区和音频码流缓冲区的设置;设置完缓冲区之后,播放控制模块启动播放器;播放器启动后处于缓冲状态,从预缓冲模块中读取数据,填充视频码流缓冲区和音频码流缓冲区。
所述状态交互模块用于与用户进行交互,当播放控制模块将播放器的播放状态发送至状态交互模块时,状态交互模块将播放器的状态呈现给用户,由用户作出暂停、等待、或跳转等操作。
进一步,所述视频码流缓冲区的大小设置为VBuffer=VMaxRate*Time,所述音频码流缓冲区的大小ABuffer=AMaxRate*Time;其中,VBuffer为播放器的视频码流缓冲区的大小,所述VMaxRate为视频流的最大码率;ABuffer为播放器的音频码流缓冲区的大小,所述AMaxRate为音频流的最大码率,所述Time为可调节的时间参数。
优选地,所述Time为10秒。
一个较佳的实施方式中,在缓冲过程中,播放器控制模块循环检测播放器的码流的状态,当视视频或音频缓冲区中的数据量大于阈值S后,播放器控制模块向播放器发送开始播放命令;所述阈值S= VMaxRate*0.5S。
更进一步,播放器开始播放后,播放器控制模块继续循环检测播放器的码流状态,当视频或音频缓冲区中的数据少于阈值L时,暂停播放器的播放,并将该事件发送至状态交互模块,所述阈值L= VMaxRate*1秒 ;当视频或音频码流缓冲区中的数据大于VBuffer上限或者MaxBuffer,或者暂停时间超过时间阈值P,播放控制模块通知播放器回复播放状态,并将该事件交给状态交互模块,播放器将其播放状态反馈给播放控制模块。
本发明还提供一种在线缓冲方法,包括以下步骤:
步骤1:预缓冲模块对接收的数据进行预缓冲,将数据提供给视频信息分析模块;
步骤2:视频信息分析模块从预缓冲模块读取视频数据进行分析。所述分析内容包括但不限于数据内容、数据码率信息等,所述数据为音视频信息;
步骤3:视频信息分析模块对视频数据进行分析,得到视频文件中各个音视频流的码率信息,并将信息传递给播放器控制模块;
步骤4:播放控制模块得到音视频码率信息后,对播放器的码流缓冲区进行设置,启动播放器,播放器从预缓冲模块中读取数据,填充视频缓冲区和音频缓冲区。
一个优选的实施方式中,所述步骤4包括:
步骤4-1:将播放器的视频码流缓冲区的大小VBuffer=VMaxRate*Time;
步骤4-2:将播放器的音频码流缓冲区的大小ABuffer=AMaxRate*Time;
其中,VBuffer为播放器的视频码流缓冲区的大小,所述VMaxRate为视频流的最大码率;ABuffer为播放器的音频码流缓冲区的大小,所述AMaxRate为音频流的最大码率,所述Time为可调节的时间参数。
可选地,所述步骤4之后还包括:步骤5:播放器控制模块循环检测播放器的码流的状态,当视视频或音频缓冲区中的数据量大于阈值S后,播放器控制模块向播放器发送开始播放命令,播放器开始播放音视频;所述阈值S= VMaxRate*0.5S。
更进一步,所述步骤5之后还包括:
播放器开始播放后,播放器控制模块继续循环检测播放器的码流状态,当视频或音频缓冲区中的数据少于阈值L时,暂停播放器的播放,并将该事件发送至状态交互模块,所述阈值L= VMaxRate*1秒 ;当视频或音频码流缓冲区中的数据大于VBuffer上限或者MaxBuffer,或者暂停时间超过时间阈值P,播放控制模块通知播放器回复播放状态,并将该事件交给状态交互模块,播放器将其播放状态反馈给播放控制模块。
上述技术方案能有效节省***内存,并能保证有足够的缓冲。当刚开播和用户跳转时只要保证能有一帧的视频数据时就开播,这样能有效减少用户的等待时间,增加了用户体验。
附图说明
图1是本发明在线缓冲***的示意图。
具体实施方式
以下将描述本发明的优选的实施方式,本领域的技术人员应当清楚这些实施方式并非限制性的。为了解决上述问题,本发明提供的具体实现方案如下。
参见附图1,本发明首先提供一种在线播放缓冲***,该***由预缓冲模块、视频信息分析模块、播放控制模块和状态交互模块构成。
上述预缓冲模块接收数据接收模块(图1中未示出)发送过来的数据,并对接收的数据进行预缓冲,而后将数据提供给外界模块使用,所述数据接收模块用于从网络获取数据。
视频信息分析模块从预缓冲模块读取视频数据进行分析,分析内容包括但不限于数据内容、数据码率信息等。优选地,所述数据为音视频信息。分析之后,视频信息分析模块得到视频文件中各个音视频流的码率信息,并将信息传递给播放器控制模块,如果某些环境下很难自动获得音视频的码率信息,也可以通过其他方式人工指定。
播放控制模块得到音视频码率信息后,对播放器的码流(bitstream)缓冲区进行设置。在一个优选地实施方式中,将播放器的视频码流(bitstream)缓冲区的大小VBuffer=VMaxRate*Time。所述VBuffer为播放器的视频码流缓冲区的大小,所述VMaxRate为视频流的最大码率,所述Time为可调节的时间参数,一个非限制性的实施方式中,Time 为10秒,即,将播放器的视频码流缓冲区设置成大于最大码率视频流10s数据的大小。另一方面,将播放器的音频码流(bitstream)缓冲区的大小ABuffer=AMaxRate*Time。所述ABuffer为播放器的音频码流缓冲区的大小,所述AMaxRate为音频流的最大码率,所述Time为可调节的时间参数,一个非限制性的实施方式中,Time 为10秒,即,将播放器的音频码流缓冲区设置成大于最大码率音频流10s数据的大小。若VMaxRate*Time〉=缓冲区的上限MaxBuffer,则VBuffer=MaxBuffer。
设置完缓冲区之后,播放控制模块启动播放器。
播放器启动后首先处于缓冲状态,并从预缓冲模块中读取数据,填充视频缓冲区和音频缓冲区。
在缓冲过程中,播放器控制模块循环检测播放器的码流bitstram的状态,当视视频或音频缓冲区中的数据量大于阈值S后,播放器控制模块向播放器发送开始播放命令;优选地,为了保证视频播放的连续性,所述阈值S= VMaxRate*0.5S,即,可取VMaxRate*0.5秒的数据。同样地,由于音视频同步,此时当音频缓冲区中的音频数据量为AMaxRate*0.5。
播放器开始播放,在开始播放后,播放器控制模块继续循环检测播放器的码流状态,当视频或音频缓冲区中的数据少于阈值L时,暂停播放器的播放,并将该事件发送至状态交互模块。优选地,为了保证不出现播放过程中的多次停顿,所述阈值L= VMaxRate*1S ,即,可取VMaxRate*1秒的数据。另一方面,当视频或音频码流缓冲区中的数据大于VBuffer上限或者MaxBuffer,或者暂停时间超过时间阈值P,播放控制模块通知播放器回复播放状态,并将该事件交给状态交互模块,播放器将其播放状态反馈给播放控制模块。可选地上述P=20秒。
状态交互模块用于与用户进行交互,当播放控制模块将播放器的播放状态发送至状态交互模块时,状态交互模块将播放器的状态呈现给用户,由用户作出暂停、等待、或跳转等操作。当用户跳转时,缓冲策略按开播时处理。
另一方面,本发明还提供一种在线缓冲方法,包括以下步骤:
步骤1:预缓冲模块对接收的数据进行预缓冲,将数据提供给视频信息分析模块。
步骤2:视频信息分析模块从预缓冲模块读取视频数据进行分析。所述分析内容包括但不限于数据内容、数据码率信息等。优选地,所述数据为音视频信息。
步骤3:视频信息分析模块对视频数据进行分析之后,得到视频文件中各个音视频流的码率信息,并将信息传递给播放器控制模块,如果某些环境下很难自动获得音视频的码率信息,也可以通过其他方式人工指定。
步骤4:播放控制模块得到音视频码率信息后,对播放器的码流(bitstream)缓冲区进行设置。在一个优选地实施方式中,将播放器的视频码流(bitstream)缓冲区的大小VBuffer=VMaxRate*Time。所述VBuffer为播放器的视频码流缓冲区的大小,所述VMaxRate为视频流的最大码率,所述Time为可调节的时间参数,一个非限制性的实施方式中,Time 为10秒,即,将播放器的视频码流缓冲区设置成大于最大码率视频流10s数据的大小。另一方面,将播放器的音频码流(bitstream)缓冲区的大小ABuffer=AMaxRate*Time。所述ABuffer为播放器的音频码流缓冲区的大小,所述AMaxRate为音频流的最大码率,所述Time为可调节的时间参数,一个非限制性的实施方式中,Time 为10秒,即,将播放器的音频码流缓冲区设置成大于最大码率音频流10s数据的大小。若VMaxRate*Time〉=缓冲区的上限MaxBuffer,则VBuffer=MaxBuffer。
步骤5:播放控制模块设置完缓冲区之后,播放控制模块启动播放器。播放器启动后首先处于缓冲状态,并从预缓冲模块中读取数据,填充视频缓冲区和音频缓冲区。
在在缓冲过程中,播放器控制模块循环检测播放器的码流bitstram的状态,当视频或音频缓冲区中的数据量大于阈值S后,播放器控制模块向播放器发送开始播放命令;优选地,为了保证视频播放的连续性,所述阈值S= VMaxRate*0.5S,即,可取VMaxRate*0.5秒的数据。同样地,由于音视频同步,此时当音频缓冲区中的音频数据量为AMaxRate*0.5。
步骤6:播放器开始播放,在开始播放后,播放器控制模块继续循环检测播放器的码流状态,当视频或音频缓冲区中的数据少于阈值L时,暂停播放器的播放,并将该事件发送至状态交互模块。优选地,为了保证不出现播放过程中的多次停顿,所述阈值L= VMaxRate*1S ,即,可取VMaxRate*1秒的数据。另一方面,当视频或音频码流缓冲区中的数据大于VBuffer上限或者MaxBuffer,或者暂停时间超过时间阈值P,播放控制模块通知播放器回复播放状态,并将该事件交给状态交互模块,播放器将其播放状态反馈给播放控制模块。可选地上述P=20秒。
状态交互模块用于与用户进行交互,当播放控制模块将播放器的播放状态发送至状态交互模块时,状态交互模块将播放器的状态呈现给用户,由用户作出暂停、等待、或跳转等操作。当用户跳转时,缓冲策略按开播时处理。
本发明的优点在于:根据音视频的码率来设置音视频bitstream缓冲的大小,该方法能有效节省***内存,并能保证有足够的缓冲。当刚开播和用户跳转时只要保证能有一桢的视频数据时就开播,这样能有效减少用户的等待时间,并能最快的把影片的第一帧画面,或跳转后的新画面展现给用户。