一种视频流发送方法及装置的制造方法

文档序号:9792150阅读:337来源:国知局
一种视频流发送方法及装置的制造方法
【技术领域】
[0001 ]本发明涉及视频处理技术领域,尤其涉及一种视频流发送方法及装置。
【背景技术】
[0002]目前,随着网络质量及带宽的提升,采用UDP(UserDatagram Protocol,用户数据报协议)协议进行视频流的传输越来越受欢迎。
[0003]视频流一般由关键帧(I帧)和非关键帧(P帧和/或B帧)组成,单个关键帧的数据量比单个非关键帧的数据量大很多,单个关键帧的数据量可达单个非关键帧的数据量的20倍甚至更多。
[0004]目前,基于UDP协议进行视频流传输的方法为:
[0005]当需要传输关键帧时,根据单个UDP包能承载的数据量,将该关键帧的数据量分配到若干个UDP包中,并一次性将该关键帧对应的所有UDP包发送出去,确定该关键帧发送完毕时,进行设定时长的休眠;继续发送该关键帧后面的非关键帧,针对每个非关键帧,采用与发送该关键帧类似的方式,将每个非关键帧发送出去。
[0006]这种基于UDP协议进行视频流传输的方法,具有以下缺点:由于单个关键帧的数据量较大,当带宽不能满足同时发送关键帧数据的情况下,就会出现大量的丢包现象,从而导致视频流无法正常解码,产生花屏、卡顿甚至黑屏等问题,影响用户体验。

【发明内容】

[0007]本发明提供一种视频流发送方法及装置,用以当带宽不能满足同时发送一个帧的帧数据的情况下,而出现大量的丢包现象及视频流无法正常解码的问题。
[0008]—种视频流发送方法,包括:
[0009]针对所述视频流中的每一帧,确定发送当前待发送帧所需的理论发送总时长;
[0010]根据所述理论发送总时长以及预设的缓冲系数,确定发送所述当前待发送帧所需的休眠总时长,所述预设的缓冲系数预先根据所述视频流的码流确定;
[0011]根据所述休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M;
[0012]将所述当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。
[0013]所述方法中,所述当前待发送帧为关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
[0014]根据所述视频流的帧率以及关键帧间隔,确定发送两个关键帧的间隔时间;
[0015]将所述当前待发送关键帧对应的权重与所述间隔时间的乘积,确定为发送所述当前待发送关键帧所需的理论发送总时长。
[0016]所述方法中,所述当前待发送关键帧对应的权重采用如下方式确定:
[0017]确定所述当前待发送关键帧为所述视频流中的第一个关键帧时,所述当前待发送关键帧对应的权重采用预设值;
[0018]确定所述当前待发送关键帧不是所述视频流中的第一个关键帧时,将所述当前待发送关键帧对应的数据量除以预设关键帧间隔中的所有帧对应的总数据量所得的结果,确定为所述当前待发送关键帧对应的权重,其中,预设关键帧间隔在所述当前待发送关键帧之前且与所述当前待发送关键帧相邻。
[0019]本发明实施例,采用不同的方式确定视频流中各关键帧对应的权重,当前待发送关键帧不是视频流中的第一个关键帧时,根据当前待发送关键帧的前一个关键帧间隔中所有帧的数据量以及当前待发送关键帧的数据量确定当前待发送关键帧的权重。
[0020]所述方法中,所述当前待发送帧为非关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
[0021]确定所述当前待发送非关键帧位于所述视频流中的第一个关键帧间隔时,计算间隔时间减去第一预设时长所得的第一差值,所述第一预设时长等于发送所述视频流中的第一个关键帧所需的理论发送总时长,所述间隔时间为预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
[0022]将所述第一差值除以第一个关键帧间隔中的非关键帧总个数得到的商,确定为发送所述当前待发送非关键帧所需的理论发送总时长。
[0023]所述方法中,所述当前待发送帧为非关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
[0024]确定所述当前待发送非关键帧位于所述视频流中的第二个关键帧之后时,计算间隔时间减去第二预设时长所得的第二差值,所述第二预设时长等于当前待发送非关键帧所在的关键帧间隔中,各个已发送帧所需的理论发送总时长之和,所述间隔时间为预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
[0025]确定所述第二差值除以当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数所得的参考时长;
[0026]确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,将所述参考时长乘以第一系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
[0027]确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述参考时长乘以第二系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
[0028]确定所述当前待发送非关键帧对应的数据量大于等于第一阈值乘以第二倍数且小于等于第一阈值乘以第一倍数时,将所述参考时长确定为发送所述当前待发送非关键帧所需的理论发送总时长;
[0029]其中,第一系数大于I,第二系数大于O且小于I,第二倍数小于第一倍数,所述第一阈值为所述当前待发送非关键帧对应的第一阈值。
[0030]本发明实施例,根据当前待发送非关键帧的数据量以及当前待发送非关键帧对应的第一阈值,分情况确定当前待发送非关键帧所需要的理论发送总时长,从而使得确定的当前待发送非关键帧所需要的理论发送总时长更加准确可靠。
[0031]所述方法中,确定所述当前待发送非关键帧为该当前待发送非关键帧所在的关键帧间隔中的第一个非关键帧时,采用如下方式确定所述第一阈值:
[0032]统计所述视频流中已发送的各个非关键帧对应的数据量之和除以已发送的非关键帧的个数所得的平均数据量,并将所述平均数据量确定为所述第一阈值。
[0033]所述方法,还包括:
[0034]确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,或者,确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述第一阈值更新为所述当前待发送非关键帧对应的数据量,并将所述更新后的第一阈值作为下一个待发送非关键帧对应的第一阈值;
[0035]确定所述当前待发送非关键帧对应的数据量大于等于所述第一阈值的第二设定倍数且小于等于所述第一阈值的第一设定倍数时,将所述第一阈值作为下一个待发送非关键帧对应的第一阈值。
[0036]本发明实施例,通过更新第一阈值,并将更新后的第一阈值作为下一个待发送关键帧对应的第一阈值,可使得所确定的待发送非关键帧的理论发送总时长更加精确。
[0037]所述方法,还包括:
[0038]将开始发送当前待发送帧的时刻加上发送所述当前待发送帧所需的理论发送总时长得到的时刻,作为所述当前待发送帧发送完毕的截止时刻;
[0039]当本次对应的帧数据发送完成并进行休眠前,记录本次对应的帧数据发送完成的时刻;
[0040]确定本次对应的帧数据发送完成的时刻晚于所述截止时刻时,本次帧数据的发送不进行休眠,继续发送下一次对应的帧数据。
[0041]本发明实施例,本次发送完成的时刻晚于截止时刻时,说明发送当前待发送帧的实际时长已经超出了当前待发送帧对应的理论发送总时长,此时为了节省时间,在之后的各次帧数据发送之后不进行休眠。
[0042 ]本发明还提供一种视频流发送装置,包括:
[0043]第一确定单元,用于针对所述视频流中的每一帧,确定发送当前待发送帧所需的理论发送总时长;
[0044]第二确定单元,用于根据所述理论发送总时长以及预设的缓冲系数,确定发送所述当前待发送帧所需的休眠总时长,所述预设的缓冲系数预先根据所述视频流的码流确定;
[0045]第三确定单元,用于根据所述休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M;
[0046]发送单元,用于将所述当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。
[0047]所述装置中,所述第一确定单元具体用于:
[0048]在所述当前待发送帧为关键帧时,根据所述视频流的帧率以及关键帧间隔,确定发送两个关键帧的间隔时间;
[0049]将所述当前待发送关键帧对应的权重与所述间隔时间的乘积,确定为发送所述当前待发送关键帧所需的理论发送总时长。
[0050]所述装置中,所述第一确定单元采用如下方式确定所述当前待发送关键帧对应的权重:
[0051]确定所述当前待发送关键帧为所述视频流中的第一个关键帧时,所述当前待发送关键帧对应的权重采用预设值;
[0052]确定所述当前待发送关键帧不是所述视频流中的第一个关键帧时,将所述当前待发送关键帧对应的数据量除以预设关键帧间隔中的所有帧对应的总数据量所得的结果,确定为所述当前待发送关键帧对应的权重,其中,预设关键帧间隔在所述当前待发送关键帧之前且与所述当前待发送关键帧相邻。
[0053]所述装置中,所述第一确定单元具体用于:
[0054]在所述当前待发送帧为非关键帧时,且确定所述当前待发送非关键帧位于所述视频流中的第一个关键帧间隔时,计算间隔时间减去第一预设时长所得的第一差值,所述第一预设时长等于发送所述视频流中的第一个关键帧所需的理论发送总时长,所述间隔时间为所述第一确定单元预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
[0055]将所述第一差值除以第一个关键帧间隔中的非关键帧总个数得到的商,确定为发送所述当前待发送非关键帧所需的理论发送总时长。
[0056]所述装置中,所述第一确定单元具体用于:
[0057]所述当前待发送帧为非关键帧时,且确定所述当前待发送非关键帧位于所述视频流中的第二个关键帧之后时,计算间隔时间减去第二预设时长所得的第二差值,所述第二预设时长等于当前待发送非关键帧所在的关键帧间隔中,各个已发送帧所需的理论发送总时长之和,所述间隔时间为所述第一确定单元预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
[0058]确定所述第二差值除以当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数所得的参考时长;
[0059]确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,将所述参考时长乘以第一系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
[0060]确定所述当前待发送非关键帧对
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1