一种流媒体播放的丢包方法、装置及服务器的制作方法

文档序号:7940057阅读:236来源:国知局
专利名称:一种流媒体播放的丢包方法、装置及服务器的制作方法
技术领域
本发明涉及无线网络领域,尤其涉及一种流媒体播放的丢包方法、装置及服务器。
背景技术
传统的基于TCP的直播传输方案为,直播流服务器从音视频编码器传过来的数据通过直播频道创建和接受模块进行频道创建和接受并缓存数据到直播数据缓存队列中,收到客户端播放器对该直播频道的请求,直播流服务器启动工作线程,从直播数据缓存队列中,从次关键帧数据开始,陆续获取后续音视频数据,并填充到待发送队列中,通过异步发送模块,将数据无损的传输到客户端进行播放。这种方案无花屏无图像跳变,在网络条件好的情况下,能实时传输数据,但是当网络发生波动,数据在服务器待发送队列中积压严重, 导致播放延时随网络波动次数增多而累加,实时性不强。不适合低延时监控流场景。因此为了满足基于2G和2. 5G网络,能通过手机终端观看实时音视频数据,监控流服务器孕育而生,这种流服务器与以往的直播流服务器最大的区别在于,尽快的将实时数据发送给用户终端而不做任何形式的缓存,当前无线带宽窄,网络波动大,遇到网络拥塞, 数据积压严重,为了适用这种网络环境,又要达到实时的要求,必须对现行的发包策略进行改进。因此为了能够使得在网络出现拥塞的情况下能够最大程度流畅的播放音视频数据, 需要提供一种新的音视频数据的发包、丢包策略。

发明内容
本发明实施例的目的在于提出一种流媒体播放的丢包方法、装置及服务器,旨在解决当网络从拥塞恢复后,能快速的传输实时音视频数据,减少从编码到播放间时延的直播监控流方法,即一种流媒体播放的丢包方法。本发明提供一种流媒体播放的丢包方法,所述的方法包括获取数据;判断是否获取到数据;若获取到则判断获取的数据是否为关键帧;若是关键帧则判断预置的待发送队列是否有数据,若有数据则将预置的待发送队列清空,将所述的数据插入所述待发送队列中;取出所述待发送队列中的队头数据,并发送,若发送成功则继续判断是否获取到数据。其中,若没有获取到数据,则取出预置的待发送队列的队头数据,并发送,若发送成功则继续判断是否获取到数据。其中,若判断获取的数据不是关键帧;或判断出待发送队列中没有数据;则将所述的数据插入预置的待发送队列队尾,再取出所述预置的待发送队列队头数据,并发送;若发送成功则继续判断是否获取到数据。
其中,若取出所述的待发送队列中的队头数据没有发送成功,将取出的数据重新插入待发送队列的队头;继续判断是否获取到数据。其中,所述的获取数据具体为预置缓存容量;接收数据,若预置缓存容量已满,则将按照先进先出的方法缓存接收到的数据。本发明还提供一种流媒体播放的丢包装置,所述的装置包括获取单元、第一处理单元、第二处理单元、第三处理单元、第一发送单元;获取单元,用于接收数据;第一判断单元,用于判断是否获取到数据;第二判断单元,用于当第一判断单元判断出获取到数据时;进一步判断获取的数据是否为关键帧;该步骤中所述的判断数据是否关键帧可以为判断数据是否为I帧;第三判断单元;用于当第二判断单元判断出所述的数据是关键帧时,进一步判断预置的待发送队列是否有数据;第一处理单元,用于当第三判断单元判断出所述预置的待发送队列中有数据时, 将预置的待发送队列清空,将所述的数据插入预置的待发送队列中,并向第一发送单元发出发送指令;第一发送单元,包括第二发送单元、缓存单元;第二发送单元,用于接收发送指令,取出所述待发送队列中的队头数据,并发送, 若发送成功则通知第一判断单元继续判断获取的数据是否为数据;缓存单元,用于判断当前剩余空间能否完全容纳所述第二发送单元取出的队头数据,若能够完全容纳,则向第二发送单元反馈发送成功。7、根据权利要求6所述的流媒体播放的丢包装置,其特征在于,所述的装置元进一步包括第二处理单元;第二处理单元,用于当第一判读单元判断出没有获取到数据时,向第一发送单元发出发送指令。其中,所述的装置进一步包括第三处理单元;第三处理单元,用于当第二判断单元判断出获取的数据不是关键帧;或当第三判断单元判断出所述待发送队列中没有数据时,将所述的数据插入预置的待发送队列队尾, 并向第一发送单元发出发送指令。其中,其特征在于,第一发送单元进一步包括第四处理单元;第四处理单元,用于所述的待发送队列中的队头数据没有发送成功时,将取出的数据重新插入待发送队列的队头;通知第一判断单元继续判断是否获取到数据;所述的缓存单元,进一步用于当判断出当前剩余空间不能完全容纳所述第二发送单元取出的队头数据时,向第四处理单元反馈发送失败。综上所述,通过本发明提供的流媒体播放的丢包方法、装置及服务器,可以在网络发生拥塞后,通过丢弃积压在服务器的数据,以减少当前传输码流,当网络恢复后快速的传输最新音视频数据,从而恢复低延时实时直播,使得在2G或2. 5G无线网络中实现较稳定的低延时实时直播音视频数据。


图1是本发明实施例1的方法流程图;图2是本发明实施例2的装置结构图结构示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。本发明提供一种流媒体播放的丢包技术方案,该方案基于TCP协议的实时直播流服务器丢包策略,通过从直播数据缓存队列中获取的数据帧类型进行判别,为关键帧则丢弃待发送队列中积压的数据帧,而且发送器则保证数据异步的完整的发送给客户端。来保证当网络发生波动时,能尽快丢弃积压音视频数据,传输最新的音视频帧到客户端,减少因网络波动造成的播放延时。实施例1,本发明提供一种流媒体播放的丢包方法,参见图1,该方法可以为步骤101 获取数据;步骤102 判断是否获取到数据;若是则执行步骤103 ;若否则执行步骤106 ;步骤103 若是则判断获取的数据是否为关键帧;若是则执行步骤104,若否则执行步骤107 ;该步骤中所述的关键帧可以为I帧。步骤104 若是关键帧则判断预置的待发送队列是否有数据,若是则执行步骤 105 ;若否则执行步骤107 ;该步骤中所述的待发送队列可以保存待发送的数据帧节点,待发送队列缓存长度无需上限值。步骤105 若有数据则将预置的待发送队列清空,将所述的数据插入所述待发送队列中;
步骤106 取出所述待发送队列中的队头数据,并发送,若发送成功则继续执行步骤102 ;若发送不成功则执行步骤108 ;该步骤中是否发送成功的判断方法可以为若预置的发送缓冲区剩余空间不能容纳整个数据帧长度时发送失败,否则则存入预置的发送该缓冲区中,视为发送成功。步骤107 直接将所述的数据插入待发送队列队尾;执行步骤106 ;步骤108 将取出的数据重新插入待发送队列的队头,执行步骤102。上述步骤101中,接收数据的方法可以为预置缓存容量;接收数据,若缓存容量已满,则将按照先进先出的方法缓存接收到的数据。也就是说,预置一个音视频数据帧队列,接收并缓存从编码服务器发送过来的音视频数据帧,队列有长度上限,长度可配置,默认设置可以为缓存最近约10分钟的媒体时长,缓存满后,收到数据帧的处理步骤按照先进先出的方法进行,也就是说,队头数据节点从队列中删除,原队头后的节点成为新的队头节点。数据帧组装成数据节点,插入队尾。
实施例2,参见图2本发明还提供一种流媒体播放的丢包装置,所述的装置包括 获取单元、第一处理单元、第二处理单元、第三处理单元、第一发送单元;获取单元,用于接收数据;第一判断单元,用于判断是否获取到数据;第二判断单元,用于当第一判断单元判断出获取到数据时;进一步判断获取的数据是否为关键帧;该步骤中所述的判断数据是否关键帧可以为判断数据是否为I帧;第三判断单元;用于当第二判断单元判断出所述的数据是关键帧时,进一步判断预置的待发送队列是否有数据;第一处理单元,用于当第三判断单元判断出所述预置的待发送队列中有数据时, 将预置的待发送队列清空,将所述的数据插入预置的待发送队列中,并向第一发送单元发出发送指令;第一发送单元,包括第二发送单元、缓存单元;第二发送单元,用于接收发送指令,取出所述待发送队列中的队头数据,并发送, 若发送成功则通知第一判断单元继续判断获取的数据是否为数据;缓存单元,用于判断当前剩余空间能否完全容纳所述第二发送单元取出的队头数据,若能够完全容纳,则向第二发送单元反馈发送成功。其中,该装置进一步包括第二处理单元;第二处理单元,用于当第一判读单元判断出没有获取到数据时,向第一发送单元发出发送指令。其中,所述的装置进一步包括第三处理单元;第三处理单元,用于当第二判断单元判断出获取的数据不是关键帧;或当第三判断单元判断出所述待发送队列中没有数据时,将所述的数据插入预置的待发送队列队尾, 并向第一发送单元发出发送指令。其中,第一发送单元进一步包括第四处理单元;第四处理单元,用于所述的待发送队列中的队头数据没有发送成功时,将取出的数据重新插入待发送队列的队头;通知第一判断单元继续判断是否获取到数据;所述的缓存单元,进一步用于当判断出当前剩余空间不能完全容纳所述第二发送单元取出的队头数据时,向第四处理单元反馈发送失败。本发明提供一种服务器,可以包括是实力中所述的一种流媒体播放的丢包装置。综上所述,本发明提供一种流媒体播放的丢包技术方案,该方案基于TCP协议的实时直播流服务器丢包策略,通过从直播数据缓存队列中获取的数据帧类型进行判别,为关键帧则丢弃待发送队列中积压的数据帧,而且发送器则保证数据异步的完整的发送给客户端。来保证当网络发生波动时,能尽快丢弃积压音视频数据,传输最新的音视频帧到客户端,减少因网络波动造成的播放延时。本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中, 所述的存储介质可以为ROM、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种流媒体播放的丢包方法,其特征在于,所述的方法包括获取数据;判断是否获取到数据;若获取到则判断获取的数据是否为关键帧;若是关键帧则判断预置的待发送队列是否有数据,若有数据则将预置的待发送队列清空,将所述的数据插入所述待发送队列中;取出所述待发送队列中的队头数据,并发送,若发送成功则继续判断是否获取到数据。
2.根据权利要求1所述的流媒体播放的丢包方法,其特征在于,若没有获取到数据,则取出预置的待发送队列的队头数据,并发送,若发送成功则继续判断是否获取到数据。
3.根据权利要求2所述的流媒体播放的丢包方法,其特征在于,若判断获取的数据不是关键帧;或判断出待发送队列中没有数据;则将所述的数据插入预置的待发送队列队尾,再取出所述预置的待发送队列队头数据,并发送;若发送成功则继续判断是否获取到数据。
4.根据权利要求3所述的流媒体播放的丢包方法,其特征在于,若取出所述的待发送队列中的队头数据没有发送成功,将取出的数据重新插入待发送队列的队头;继续判断是否获取到数据。
5.根据权利要求1所述的流媒体播放的丢包方法,其特征在于,所述的获取数据具体为预置缓存容量;接收数据,若预置缓存容量已满,则将按照先进先出的方法缓存接收到的数据。
6.一种流媒体播放的丢包装置,其特征在于,所述的装置包括获取单元、第一处理单元、第二处理单元、第三处理单元、第一发送单元;获取单元,用于接收数据;第一判断单元,用于判断是否获取到数据;第二判断单元,用于当第一判断单元判断出获取到数据时;进一步判断获取的数据是否为关键帧;该步骤中所述的判断数据是否关键帧可以为判断数据是否为I帧;第三判断单元;用于当第二判断单元判断出所述的数据是关键帧时,进一步判断预置的待发送队列是否有数据;第一处理单元,用于当第三判断单元判断出所述预置的待发送队列中有数据时,将预置的待发送队列清空,将所述的数据插入预置的待发送队列中,并向第一发送单元发出发送指令;第一发送单元,包括第二发送单元、缓存单元;第二发送单元,用于接收发送指令,取出所述待发送队列中的队头数据,并发送,若发送成功则通知第一判断单元继续判断获取的数据是否为数据;缓存单元,用于判断当前剩余空间能否完全容纳所述第二发送单元取出的队头数据, 若能够完全容纳,则向第二发送单元反馈发送成功。
7.根据权利要求6所述的流媒体播放的丢包装置,其特征在于,所述的装置元进一步包括第二处理单元;第二处理单元,用于当第一判读单元判断出没有获取到数据时,向第一发送单元发出发送指令。
8.根据权利要求7所述的流媒体播放的丢包装置,其特征在于,所述的装置进一步包括第三处理单元;第三处理单元,用于当第二判断单元判断出获取的数据不是关键帧;或当第三判断单元判断出所述待发送队列中没有数据时,将所述的数据插入预置的待发送队列队尾,并向第一发送单元发出发送指令。
9.根据权利要求6至8其中之一所述的流媒体播放的丢包装置,其特征在于,第一发送单元进一步包括第四处理单元;第四处理单元,用于所述的待发送队列中的队头数据没有发送成功时,将取出的数据重新插入待发送队列的队头;通知第一判断单元继续判断是否获取到数据;所述的缓存单元,进一步用于当判断出当前剩余空间不能完全容纳所述第二发送单元取出的队头数据时,向第四处理单元反馈发送失败。
10.一种流媒体播放的丢包服务器,其特征在于,所述的服务器包括权利要求6至9其中之一所述的流媒体播放的丢包装置。
全文摘要
本发明提供一种流媒体播放的丢包方法获取数据;判断是否获取到数据;若获取到则判断获取的数据是否为关键帧;若是关键帧则判断预置的待发送队列是否有数据,若有数据则将预置的待发送队列清空,将所述的数据插入所述待发送队列中;取出所述待发送队列中的队头数据,并发送,若发送成功则继续判断是否获取到数据。本发明还提供一种流媒体播放的丢包装置获取单元、第一处理单元、第二处理单元、第三处理单元、第一发送单元。通过本发明提供的技术方案可以在网络发生拥塞后,通过丢弃积压在服务器的数据,以减少当前传输码流,当网络恢复后快速的传输最新音视频数据,使得在2G或2.5G无线网络中实现较稳定的低延时实时直播音视频数据。
文档编号H04N21/647GK102325275SQ20111031409
公开日2012年1月18日 申请日期2011年10月17日 优先权日2011年10月17日
发明者熊剑 申请人:深圳市融创天下科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1