一种流媒体直播中音频数据送解播放方法
【专利摘要】本发明提出一种流媒体直播中音频数据送解播放方法,包括下列步骤:初始化多媒体模块;开启送解播放线程;判断送解缓冲区是否为空;当送解缓冲区为空时,将写入缓冲区的音频数据交换到送解缓冲区中;判断当前音频数据时间戳是否滞后于系统时间戳,即根据时间戳判断是否满足送解条件;当所述音频数据满足送解条件时,将送解缓冲区中的音频数据送解;当音频数据播放完毕后关闭送解播放线程。本发明提出的流媒体直播中音频数据送解播放方法,音频播放时序和速率不再由同步模块控制,而由多媒体模块自主控制,力图在CPU使用率高的环境下仍可以顺畅播音,同时根据播放状态动态调整音频数据送解。
【专利说明】
一种流媒体直播中音频数据送解播放方法
技术领域
[0001]本发明涉及流媒体直播领域,且特别涉及一种流媒体直播中音频数据送解播放方法。
【背景技术】
[0002]随着互联网的发展,利用网络进行流媒体直播或点播逐渐成为一种趋势,慢慢融入到人们的日常生活中,在工作、学习以及娱乐等各个方面形成热点,无论是视频会议、在线教育还是网络电视、视频网站都应用的越来越广泛。流媒体(Stream Media)是指采用流式传输的方式在Internet/Intranet播放的媒体格式,如音频、视频或多媒体文件。流媒体在播放前不需要下载整个文件,只将开始部分内容存入内存,在计算机中对数据包进行缓存并使流媒体数据正确地输出,可以边下载边观看。其原理是把向用户传输的多媒体文件按照播出时间顺序分为不同的片段,然后依次把这些片段发给用户,连续播放这些片段就形成了连续的声音和图像。
[0003]流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或者几十秒的启动延时即可再用户的计算机上利用解压设备对压缩的多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式不仅使启动时间大幅度地缩短,而且对系统缓存容量的需求也大大降低,极大地减少用户用在等待的时间。目前,流媒体技术已经广泛应用在互联网领域中。
[0004]现有技术中的直播系统,音频播放一般由同步模块控制播放时序和速率,当CPU使用率过高或同步线程忙碌时,音频播放将出现卡顿现象。
【发明内容】
[0005]本发明提出一种流媒体直播中音频数据送解播放方法,音频播放时序和速率不再由同步模块控制,而由多媒体模块自主控制,力图在CPU使用率高的环境下仍可以顺畅播音,同时根据播放状态动态调整音频数据送解。
[0006]为了达到上述目的,本发明提出一种流媒体直播中音频数据送解播放方法,包括下列步骤:
[0007]初始化多媒体模块;
[0008]开启送解播放线程;
[0009]判断送解缓冲区是否为空;
[0010]当送解缓冲区为空时,将写入缓冲区的音频数据交换到送解缓冲区中;
[0011]判断当前音频数据时间戳是否滞后于系统时间戳,即根据时间戳判断是否满足送解条件;
[0012]当所述音频数据满足送解条件时,将送解缓冲区中的音频数据送解;
[0013]当音频数据播放完毕后关闭送解播放线程。
[0014]进一步的,该方法还包括:
[0015]当播放延迟时间小于等于最大误差值时,继续将送解缓冲区中的音频数据送解;
[0016]当播放延迟时间大于最大误差值时,则将送解缓冲区中的音频数据抛弃直到播放延迟时间在最大误差值以内。
[0017]进一步的,所述最大误差值设置为200ms。
[0018]进一步的,该方法还包括:
[0019]若当前音频数据时间戳领先于系统时间戳时,判断为音频播放超前,此时送解播放线程需要等待,直到系统时间赶上当前音频数据时间戳后继续送解播放。
[0020]进一步的,该方法还包括:
[0021]针对多路音频,新的一路音频将创建一个新的送解播放线程,直到送解播放线程的数量达到最大值;
[0022]当送解播放线程的数量达到最大值后,新的一路音频会从已创建的送解播放线程中找出最空闲的线程,并这路音频加入该线程的音频播放列表中。
[0023]进一步的,所述送解播放线程的数量最大值为5个。
[0024]本发明提出的流媒体直播中音频数据送解播放方法,通过送解缓冲区和写入缓冲区进行数据交换,达到异步播放的效果,根据音频数据的时间戳和系统时间戳的关系,控制音频数据送解的时序和速率,同时通过多路送解播放线程达到多路音频数据同时播放的效果,提高流媒体直播中的音频播放性能和播放效果。
【附图说明】
[0025]图1所示为本发明较佳实施例的流媒体直播中音频数据送解播放方法流程图。
[0026]图2所示为本发明较佳实施例的送解缓冲区和写入缓冲区进行数据交换示意图。
[0027]图3所示为本发明较佳实施例的当前音频数据时间戳和系统时间戳组成的播放时间线示意图。
【具体实施方式】
[0028]以下结合附图给出本发明的【具体实施方式】,但本发明不限于以下的实施方式。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用于方便、明晰地辅助说明本发明实施例的目的。
[0029]请参考图1?图3,图1所示为本发明较佳实施例的流媒体直播中音频数据送解播放方法流程图,图2所示为本发明较佳实施例的送解缓冲区和写入缓冲区进行数据交换示意图,图3所示为本发明较佳实施例的当前音频数据时间戳和系统时间戳组成的播放时间线示意图。
[0030]本发明提出一种流媒体直播中音频数据送解播放方法,包括下列步骤:
[0031 ]步骤SlOO:初始化多媒体模块;
[0032]步骤S200:开启送解播放线程;
[0033]步骤S300:判断送解缓冲区是否为空;
[0034]步骤S400:当送解缓冲区为空时,将写入缓冲区的音频数据交换到送解缓冲区中;
[0035]步骤S500:判断当前音频数据时间戳是否滞后于系统时间戳,即根据时间戳判断是否满足送解条件;
[0036]步骤S600:当所述音频数据满足送解条件时,将送解缓冲区中的音频数据送解;
[0037]步骤S700:当音频数据播放完毕后关闭送解播放线程。
[0038]其中步骤S300?步骤S600组成送解播放线程的主线程,数据缓冲区分写入缓冲区和送解缓冲区两种,缓冲区存放若干音频数据块(block),每个数据块包含时间戳等信息。播放开始后,若送解缓冲区为空,写入缓冲区非空,播放线程将快速交换送解缓冲区和写入缓冲区的数据,不将阻碍上层的数据写入线程,从而达到异步播放的效果。
[0039]根据本发明较佳实施例,该方法还包括:
[0040]当播放延迟时间小于等于最大误差值时,继续将送解缓冲区中的音频数据送解;[0041 ]当播放延迟时间大于最大误差值时,则将送解缓冲区中的音频数据抛弃直到播放延迟时间在最大误差值以内。这种情况说明用户的网络状况较差,将落后较多的音频数据丢弃从而播放最新的音频数据,用以改善用户音频播放的实时性。
[0042]进一步的,所述最大误差值设置为200ms,也可以根据实际需求进行设置。当播放延迟时间小于等于200ms时,继续将送解缓冲区中的音频数据送解,政策播放音频数据;当播放延迟时间大于200ms时,例如播放延迟时间达到2s,此时将落后较多的音频数据丢弃,即将落后2s到200ms之间的音频数据丢弃,从播放时间延迟200ms处的音频数据开始继续播放。
[0043]根据本发明较佳实施例,该方法还包括:
[0044]若当前音频数据时间戳领先于系统时间戳时,判断为音频播放超前,此时送解播放线程需要等待,直到系统时间赶上当前音频数据时间戳后继续送解播放。当前音频数据时间戳领先于系统时间戳时,一般是出现了音频数据丢包的情况,当前播放的音频数据已经超过系统时间,此时需要暂停音频数据的送解播放,直到系统时间和当前播放的音频数据时间戳一致后再继续将新的音频数据送解播放。
[0045]根据本发明较佳实施例,该方法还包括:
[0046]针对多路音频,新的一路音频将创建一个新的送解播放线程,直到送解播放线程的数量达到最大值;
[0047]当送解播放线程的数量达到最大值后,新的一路音频会从已创建的送解播放线程中找出最空闲的线程,并这路音频加入该线程的音频播放列表中。
[0048]进一步的,所述送解播放线程的数量最大值为5个。当实际应用场景中出现多路音频数据,例如同时有多人说话,产生多路音频数据,系统可设置同时最多发言的人数,本实施例中为5人,即最多只能有5人同时发言。在已有音频数据出现过程中,新的一路音频数据将创建一个新的送解播放线程(最多5个送解播放线程)或从已创建的5个送解播放线程中找出最空闲线程,将这路音频加入该线程的音频播放列表中。
[0049 ]综上所述,本发明提出的流媒体直播中音频数据送解播放方法,通过送解缓冲区和写入缓冲区进行数据交换,达到异步播放的效果,根据音频数据的时间戳和系统时间戳的关系,控制音频数据送解的时序和速率,同时通过多路送解播放线程达到多路音频数据同时播放的效果,提高流媒体直播中的音频播放性能和播放效果。
[0050]虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
【主权项】
1.一种流媒体直播中音频数据送解播放方法,其特征在于,包括下列步骤: 初始化多媒体模块; 开启送解播放线程; 判断送解缓冲区是否为空; 当送解缓冲区为空时,将写入缓冲区的音频数据交换到送解缓冲区中; 判断当前音频数据时间戳是否滞后于系统时间戳,即根据时间戳判断是否满足送解条件; 当所述音频数据满足送解条件时,将送解缓冲区中的音频数据送解; 当音频数据播放完毕后关闭送解播放线程。2.根据权利要求1所述的流媒体直播中音频数据送解播放方法,其特征在于,该方法还包括: 当播放延迟时间小于等于最大误差值时,继续将送解缓冲区中的音频数据送解; 当播放延迟时间大于最大误差值时,则将送解缓冲区中的音频数据抛弃直到播放延迟时间在最大误差值以内。3.根据权利要求2所述的流媒体直播中音频数据送解播放方法,其特征在于,所述最大误差值设置为200ms。4.根据权利要求1所述的流媒体直播中音频数据送解播放方法,其特征在于,该方法还包括: 若当前音频数据时间戳领先于系统时间戳时,判断为音频播放超前,此时送解播放线程需要等待,直到系统时间赶上当前音频数据时间戳后继续送解播放。5.根据权利要求1所述的流媒体直播中音频数据送解播放方法,其特征在于,该方法还包括: 针对多路音频,新的一路音频将创建一个新的送解播放线程,直到送解播放线程的数量达到最大值; 当送解播放线程的数量达到最大值后,新的一路音频会从已创建的送解播放线程中找出最空闲的线程,并这路音频加入该线程的音频播放列表中。6.根据权利要求5所述的流媒体直播中音频数据送解播放方法,其特征在于,所述送解播放线程的数量最大值为5个。
【文档编号】H04N21/8547GK105872696SQ201610187829
【公开日】2016年8月17日
【申请日】2016年3月29日
【发明人】虞陆平, 聂大鹏, 罗树军, 台跃华, 熊涛, 祝亮, 陈锋锋, 林肖琼
【申请人】杭州施强网络科技有限公司