减少时延的直播流推送方法及装置、直播系统与流程

文档序号:12499396阅读:188来源:国知局

本发明涉及实时视频传输技术领域,特别是涉及一种减少时延的直播流推送方法及装置、直播系统。



背景技术:

互联网直播日益盛行,视频直播需要占用大量上传带宽,然而我国电信运营商能够提供的网络上传带宽却一直没有量的变化,网络经常会有抖动,主流的直播协议是rtmp协议,这个协议的基础是tcp协议,根据tcp协议当网络发生波动时,发送端没有发送成功的数据包会等到网络恢复平稳后继续发送,在主播端就会造成数据包堆积,这样客户端观看到的直播流就会变成主播之前一小段时间的流,增加了直播的延时。导致互动性降低,

直播平台互动的方式主要是主播进行直播,观众通过观看视频直播,在文字聊天室打字和主播互动,文字信息传输量小基本是实时传输,这样的模式决定了主播端到客户端的直播延时在3秒以内是可以优化互动的,大于3秒就会有明显的延时感,主播之前好长时间做的事情,观众很久之后才能看到,极大地降低互动性。

我秀直播平台目前采用rtmp协议进行直播,经常会有观众端出现观看延时的现象,极大地影响了观众与主播之间的互动。



技术实现要素:

本发明的目的是针对现有技术中存在的技术缺陷,而提供一种减少时延的直播流推送方法、装置及直播系统。

为实现本发明的目的所采用的技术方案是:

一种减少时延的直播流推送方法,包括,

将原数据进行编码成预定数据格式,

将编码后的数据打包成数据包并发送至发送队列,

判断数据包发送队列中数据包数量是否正常,

如不正常则主动丢弃部分或全部数据包使其不进入发送队列。

所述的直播流的预定数据格式为H.264编解码格式,所述的数据包的传输协议为Rtmp协议。

在网络直播的主播端进行。

当所述的数据包发送队列的数量不大于第一阈值,不主动丢弃数据包,

当所述的数据包发送队列的数量大于第一阈值且不大于第二阈值,主动丢弃新传送来的全部B帧数据包,

当所述的数据包发送队列的数量大于第二阈值且不大于第三阈值,主动丢弃新传送来的全部B帧数据包,丢弃部分或全部P帧数据包,

当所述的数据包发送队列的数量大于第三阈值,主动丢弃新传送来的全部B帧数据包,丢弃全部P帧数据包,丢弃部分或全部I帧数据包。

所述的第一阈值为64,第二阈值为128,第三阈值为256。

一种减少时延的直播流推送装置,包括,

编码模块,用以将原数据进行编码成预定数据格式,

传输模块,用以将编码后的数据打包成数据包并发送至发送队列,

发送状态监控模块,用以监控数据包发送队列的数据包数量并判断是否正常,

丢包模块,用以当发送队列中数量不正常时主动丢弃部分或全部数据包使其不进入发送队列。

所述的编码模块H.264编解码格式,所述的传输模块的传输协议为Rtmp协议。

在网络直播的主播端运行。

所述的丢包模块的控制方法为,

当所述的数据包发送队列的数量不大于第一阈值,不主动丢弃数据包,

当所述的数据包发送队列的数量大于第一阈值且不大于第二阈值,主动丢弃新传送来的全部B帧数据包,

当所述的数据包发送队列的数量大于第二阈值且不大于第三阈值,主动丢弃新传送来的全部B帧数据包,丢弃部分或全部P帧数据包,

当所述的数据包发送队列的数量大于第三阈值,主动丢弃新传送来的全部B帧数据包,丢弃全部P帧数据包,丢弃部分I帧数据包。

一种具有所述的减少时延的直播流推送装置的直播系统。

与现有技术相比,本发明的有益效果是:

本发明针对网络抖动时现有rtmp直播协议会引入延时,增加了主播端丢帧机制,将打包的数据在不影响观众端播放的情况下,将图像数据合理的丢弃一部分,这样就不会触发tcp的重传机制,其可以有效的降低这种延时,增加主播和观众实时互动性。

附图说明

图1所示为本发明的减少时延的直播流推送方法的流程示意图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

直播技术流程:主播端直播时分为3个大的模块,音视频数据采集,编码,推送。观众端相应的也分为3个模块,音视频数据接收,解码,播放。

造成直播延时的原因,原始图像数据通常很大,通过h.264视频压缩算法进行压缩,通过rtmp协议封装成数据包,进行网络传输,图像数据虽然进行了压缩,但是数据量仍然相当大,当网络出现抖动或者其他异常时,根据rtmp协议,数据要缓存在发送端等待网络恢复时一并发送,这样就会到导致观众端的播放器在某个时间没有数据,过一会数据恢复了陆续播出的时候造成了延时。

为了降低网络抖动引起的时延,本发明减少时延的直播流推送方法,其特征在于,包括,

步骤101,将原数据进行编码成预定数据格式,

视频原数据压缩方式可采用任意现有技术,如h.264视频压缩算法,根据h.264视频压缩算法,图像序列会被压缩成I帧P帧和B帧,I帧进行图像帧内压缩,解码时I帧自己本身可以独立恢复成一帧图像画面,P帧参考I帧进行压缩,解码恢复时也就是需要等I帧解码成完整图像才能恢复,B帧参考P帧恢复。整个图像序列是由多个重复的IPBBPBBPIPBBPBBP序列组成的。在观众端只要能解码完毕第一个I帧就会显示图像,相应的解码P和B帧时显示连贯的图像。

步骤102,将编码后的数据打包成数据包并发送至发送队列,

I帧、B帧和P帧各自封装成对应的rtmp数据包类型,每帧对应一个数据包,封装的主要目的就是增加视频流的时间戳,丢包时不影响后续时间戳的正确封装,因此不会出现音画不同的问题。

步骤103,根据数据包发送队列的数量判定网络状态,

原数据持续地进行编码成IPBBBPBBBP数据格式,然后被打包成RTMP数据包,网络抖动时发送数据包的队列会因为发送的数据包的速度小于实时编码封装数据包的速度,出现队列的逐渐增大的情况,根据实际测验当发送队列内的元素数目大于第一阈值,如64时判断为网络出现抖动,大于第二阈值,如128判断为较严重,大于第三阈值,如256时判断为很严重,

步骤104,当网络出现抖动时主动丢弃部分或全部数据包使其不进入数据包发送队列直至数据包发送队列正常。

丢包的逻辑处理在数据包生成和数据包进入队列线程之间,也就是不让封装好的rtmp数据包继续进入发送的队列,造成发送队列堵塞越来越严重的情况。即每当有新的rtmp数据包进入发送队列时会进行对发送队列已有数据包元个数的判断,并根据队列中数据包个数进行具体区别对待,

具体地,当所述的数据包发送队列的数量大于第一阈值且不大于第二阈值,视为网络出现抖动,主动丢弃新传送来的全部B帧数据包,此时陆续产生的P帧和I帧依然会进入到发送队列中;

当所述的数据包发送队列的数量大于第二阈值且不大于第三阈值,视为网络抖动较严重,主动丢弃新传送来的全部B帧数据包,丢弃部分或全部P帧数据包,当出现较严重的网络抖动,为保证传输的实时性,根据情况进行P帧的选择性或者全部丢弃,如隔一丢一,隔二丢一等,在网络许可情况下尽可能保证在两个I帧之间有一个P帧存在;当部分丢弃模式不足以遏制队列增长时,可选择全部丢弃P帧;

当所述的数据包发送队列的数量大于第三阈值,视为网络抖动严重,主动丢弃新传送来的全部B帧数据包,丢弃全部P帧数据包,丢弃部分或全部I帧数据包。通过主动丢弃数据包,牺牲一定画面质量甚至一段视频信息,保证网络抖动时的小时延,提升网络主播的沟通实时性。

本发明针对网络抖动时现有rtmp直播协议会引入延时,增加了主播端丢帧机制,将打包的数据在不影响观众端播放的情况下,将图像数据合理的丢弃一部分,这样就不会触发tcp的重传机制,其可以有效的降低这种延时,增加主播和观众实时互动性。

同时,本发明还公开了减少时延的直播流推送装置,包括,

编码模块,用以将原数据进行编码成预定数据格式,如H.264编解码格式;

传输模块,用以将编码后的数据打包成数据包并发送至发送队列,所述的传输模块的传输协议为Rtmp协议。

发送状态监控模块,用以根据数据包发送队列的数量判定网络状态,

丢包模块,用以当网络出现抖动时主动丢弃部分数据包直至数据包发送队列正常,所述的丢包模块的控制方法为,

当所述的数据包发送队列的数量不大于第一阈值,视为网络正常,不主动丢弃数据包,

当所述的数据包发送队列的数量大于第一阈值且不大于第二阈值,视为网络出现抖动,主动丢弃队列中全部B帧数据包,

当所述的数据包发送队列的数量大于第二阈值且不大于第三阈值,视为网络抖动较严重,主动丢弃队列中全部B帧数据包,丢弃部分或全部P帧数据包,

当所述的数据包发送队列的数量大于第二阈值且不大于第三阈值,视为网络抖动严重,主动丢弃队列中全部B帧数据包,丢弃全部P帧数据包,丢弃部分或全部I帧数据包。

根据队列中现存的数据包数量对新来的数据包进行丢弃处理,不影响正常的发送队列,而且根据队列变化适时调整丢包策略,能有效均衡实时性和画面,提升整体观看感受。

本发明还公开了一种具有所述的减少时延的直播流推送装置的直播系统,采用该直播系统,主播端的数据得以及时发出,减少时延,提高观众与主播间的互动。

以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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