CN105554517B - 一种视频流发送方法及装置 - Google Patents
一种视频流发送方法及装置 Download PDFInfo
- Publication number
- CN105554517B CN105554517B CN201510881614.XA CN201510881614A CN105554517B CN 105554517 B CN105554517 B CN 105554517B CN 201510881614 A CN201510881614 A CN 201510881614A CN 105554517 B CN105554517 B CN 105554517B
- Authority
- CN
- China
- Prior art keywords
- sent
- frame
- key frame
- current
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000005540 biological transmission Effects 0.000 claims abstract description 124
- 230000004622 sleep time Effects 0.000 claims abstract description 17
- 230000005059 dormancy Effects 0.000 claims abstract description 10
- 241000208340 Araliaceae Species 0.000 claims 4
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 4
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 4
- 235000008434 ginseng Nutrition 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010025 steaming Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234381—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/23608—Remultiplexing multiplex streams, e.g. involving modifying time stamps or remapping the packet identifiers
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Television Systems (AREA)
Abstract
本发明提供一种视频流发送方法及装置,该方法包括:确定发送当前待发送帧所需的理论发送总时长;根据所述理论发送总时长以及预设的缓冲系数,确定发送所述当前待发送帧所需的休眠总时长,所述预设的缓冲系数预先根据视频流的码流确定;根据所述休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M;将所述当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。本发明能够避免由于单个帧的数据量较大且当带宽不能满足发送该帧数据的情况下,而出现的大量的丢包现象,提高了用户体验。
Description
技术领域
本发明涉及视频处理技术领域,尤其涉及一种视频流发送方法及装置。
背景技术
目前,随着网络质量及带宽的提升,采用UDP(User Datagram Protocol,用户数据报协议)协议进行视频流的传输越来越受欢迎。
视频流一般由关键帧(I帧)和非关键帧(P帧和/或B帧)组成,单个关键帧的数据量比单个非关键帧的数据量大很多,单个关键帧的数据量可达单个非关键帧的数据量的20倍甚至更多。
目前,基于UDP协议进行视频流传输的方法为:
当需要传输关键帧时,根据单个UDP包能承载的数据量,将该关键帧的数据量分配到若干个UDP包中,并一次性将该关键帧对应的所有UDP包发送出去,确定该关键帧发送完毕时,进行设定时长的休眠;继续发送该关键帧后面的非关键帧,针对每个非关键帧,采用与发送该关键帧类似的方式,将每个非关键帧发送出去。
这种基于UDP协议进行视频流传输的方法,具有以下缺点:由于单个关键帧的数据量较大,当带宽不能满足同时发送关键帧数据的情况下,就会出现大量的丢包现象,从而导致视频流无法正常解码,产生花屏、卡顿甚至黑屏等问题,影响用户体验。
发明内容
本发明提供一种视频流发送方法及装置,用以当带宽不能满足同时发送一个帧的帧数据的情况下,而出现大量的丢包现象及视频流无法正常解码的问题。
一种视频流发送方法,包括:
针对所述视频流中的每一帧,确定发送当前待发送帧所需的理论发送总时长;
根据所述理论发送总时长以及预设的缓冲系数,确定发送所述当前待发送帧所需的休眠总时长,所述预设的缓冲系数预先根据所述视频流的码流确定;
根据所述休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M;
将所述当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。
所述方法中,所述当前待发送帧为关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
根据所述视频流的帧率以及关键帧间隔,确定发送两个关键帧的间隔时间;
将所述当前待发送关键帧对应的权重与所述间隔时间的乘积,确定为发送所述当前待发送关键帧所需的理论发送总时长。
所述方法中,所述当前待发送关键帧对应的权重采用如下方式确定:
确定所述当前待发送关键帧为所述视频流中的第一个关键帧时,所述当前待发送关键帧对应的权重采用预设值;
确定所述当前待发送关键帧不是所述视频流中的第一个关键帧时,将所述当前待发送关键帧对应的数据量除以预设关键帧间隔中的所有帧对应的总数据量所得的结果,确定为所述当前待发送关键帧对应的权重,其中,预设关键帧间隔在所述当前待发送关键帧之前且与所述当前待发送关键帧相邻。
本发明实施例,采用不同的方式确定视频流中各关键帧对应的权重,当前待发送关键帧不是视频流中的第一个关键帧时,根据当前待发送关键帧的前一个关键帧间隔中所有帧的数据量以及当前待发送关键帧的数据量确定当前待发送关键帧的权重。
所述方法中,所述当前待发送帧为非关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
确定所述当前待发送非关键帧位于所述视频流中的第一个关键帧间隔时,计算间隔时间减去第一预设时长所得的第一差值,所述第一预设时长等于发送所述视频流中的第一个关键帧所需的理论发送总时长,所述间隔时间为预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
将所述第一差值除以第一个关键帧间隔中的非关键帧总个数得到的商,确定为发送所述当前待发送非关键帧所需的理论发送总时长。
所述方法中,所述当前待发送帧为非关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
确定所述当前待发送非关键帧位于所述视频流中的第二个关键帧之后时,计算间隔时间减去第二预设时长所得的第二差值,所述第二预设时长等于当前待发送非关键帧所在的关键帧间隔中,各个已发送帧所需的理论发送总时长之和,所述间隔时间为预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
确定所述第二差值除以当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数所得的参考时长;
确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,将所述参考时长乘以第一系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述参考时长乘以第二系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
确定所述当前待发送非关键帧对应的数据量大于等于第一阈值乘以第二倍数且小于等于第一阈值乘以第一倍数时,将所述参考时长确定为发送所述当前待发送非关键帧所需的理论发送总时长;
其中,第一系数大于1,第二系数大于0且小于1,第二倍数小于第一倍数,所述第一阈值为所述当前待发送非关键帧对应的第一阈值。
本发明实施例,根据当前待发送非关键帧的数据量以及当前待发送非关键帧对应的第一阈值,分情况确定当前待发送非关键帧所需要的理论发送总时长,从而使得确定的当前待发送非关键帧所需要的理论发送总时长更加准确可靠。
所述方法中,确定所述当前待发送非关键帧为该当前待发送非关键帧所在的关键帧间隔中的第一个非关键帧时,采用如下方式确定所述第一阈值:
统计所述视频流中已发送的各个非关键帧对应的数据量之和除以已发送的非关键帧的个数所得的平均数据量,并将所述平均数据量确定为所述第一阈值。
所述方法,还包括:
确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,或者,确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述第一阈值更新为所述当前待发送非关键帧对应的数据量,并将所述更新后的第一阈值作为下一个待发送非关键帧对应的第一阈值;
确定所述当前待发送非关键帧对应的数据量大于等于所述第一阈值的第二设定倍数且小于等于所述第一阈值的第一设定倍数时,将所述第一阈值作为下一个待发送非关键帧对应的第一阈值。
本发明实施例,通过更新第一阈值,并将更新后的第一阈值作为下一个待发送关键帧对应的第一阈值,可使得所确定的待发送非关键帧的理论发送总时长更加精确。
所述方法,还包括:
将开始发送当前待发送帧的时刻加上发送所述当前待发送帧所需的理论发送总时长得到的时刻,作为所述当前待发送帧发送完毕的截止时刻;
当本次对应的帧数据发送完成并进行休眠前,记录本次对应的帧数据发送完成的时刻;
确定本次对应的帧数据发送完成的时刻晚于所述截止时刻时,本次帧数据的发送不进行休眠,继续发送下一次对应的帧数据。
本发明实施例,本次发送完成的时刻晚于截止时刻时,说明发送当前待发送帧的实际时长已经超出了当前待发送帧对应的理论发送总时长,此时为了节省时间,在之后的各次帧数据发送之后不进行休眠。
本发明还提供一种视频流发送装置,包括:
第一确定单元,用于针对所述视频流中的每一帧,确定发送当前待发送帧所需的理论发送总时长;
第二确定单元,用于根据所述理论发送总时长以及预设的缓冲系数,确定发送所述当前待发送帧所需的休眠总时长,所述预设的缓冲系数预先根据所述视频流的码流确定;
第三确定单元,用于根据所述休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M;
发送单元,用于将所述当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。
所述装置中,所述第一确定单元具体用于:
在所述当前待发送帧为关键帧时,根据所述视频流的帧率以及关键帧间隔,确定发送两个关键帧的间隔时间;
将所述当前待发送关键帧对应的权重与所述间隔时间的乘积,确定为发送所述当前待发送关键帧所需的理论发送总时长。
所述装置中,所述第一确定单元采用如下方式确定所述当前待发送关键帧对应的权重:
确定所述当前待发送关键帧为所述视频流中的第一个关键帧时,所述当前待发送关键帧对应的权重采用预设值;
确定所述当前待发送关键帧不是所述视频流中的第一个关键帧时,将所述当前待发送关键帧对应的数据量除以预设关键帧间隔中的所有帧对应的总数据量所得的结果,确定为所述当前待发送关键帧对应的权重,其中,预设关键帧间隔在所述当前待发送关键帧之前且与所述当前待发送关键帧相邻。
所述装置中,所述第一确定单元具体用于:
在所述当前待发送帧为非关键帧时,且确定所述当前待发送非关键帧位于所述视频流中的第一个关键帧间隔时,计算间隔时间减去第一预设时长所得的第一差值,所述第一预设时长等于发送所述视频流中的第一个关键帧所需的理论发送总时长,所述间隔时间为所述第一确定单元预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
将所述第一差值除以第一个关键帧间隔中的非关键帧总个数得到的商,确定为发送所述当前待发送非关键帧所需的理论发送总时长。
所述装置中,所述第一确定单元具体用于:
所述当前待发送帧为非关键帧时,且确定所述当前待发送非关键帧位于所述视频流中的第二个关键帧之后时,计算间隔时间减去第二预设时长所得的第二差值,所述第二预设时长等于当前待发送非关键帧所在的关键帧间隔中,各个已发送帧所需的理论发送总时长之和,所述间隔时间为所述第一确定单元预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
确定所述第二差值除以当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数所得的参考时长;
确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,将所述参考时长乘以第一系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述参考时长乘以第二系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
确定所述当前待发送非关键帧对应的数据量大于等于第一阈值乘以第二倍数且小于等于第一阈值乘以第一倍数时,将所述参考时长确定为发送所述当前待发送非关键帧所需的理论发送总时长;
其中,第一系数大于1,第二系数大于0且小于1,第二倍数小于第一倍数,所述第一阈值为所述当前待发送非关键帧对应的第一阈值。
所述装置中,所述第一单元在确定所述当前待发送非关键帧为该当前待发送非关键帧所在的关键帧间隔中的第一个非关键帧时,采用如下方式确定所述第一阈值:
统计所述视频流中已发送的各个非关键帧对应的数据量之和除以已发送的非关键帧的个数所得的平均数据量,并将所述平均数据量确定为所述第一阈值。
所述装置,所述第一确定单元还用于:
确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,或者,确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述第一阈值更新为所述当前待发送非关键帧对应的数据量,并将所述更新后的第一阈值作为下一个待发送非关键帧对应的第一阈值;
确定所述当前待发送非关键帧对应的数据量大于等于所述第一阈值的第二设定倍数且小于等于所述第一阈值的第一设定倍数时,将所述第一阈值作为下一个待发送非关键帧对应的第一阈值。
所述装置,还包括:
时刻确定单元,用于将开始发送当前待发送帧的时刻加上发送所述当前待发送帧所需的理论发送总时长得到的时刻,作为所述当前待发送帧发送完毕的截止时刻;当本次对应的帧数据发送完成并进行休眠前,记录本次对应的帧数据发送完成的时刻;确定本次对应的帧数据发送完成的时刻晚于所述截止时刻时,本次帧数据的发送不进行休眠,继续发送下一次对应的帧数据。
利用本发明提供视频流发送方法及装置,具有以下有益效果:通过将当前待发送帧分为多次发送,避免了由于单个帧的数据量较大且当带宽不能满足发送该帧数据的情况下,而出现的大量的丢包现象,进而可保证视频流的正常解码,避免产生花屏、卡顿甚至黑屏等问题,提高了用户体验。
附图说明
图1为本发明实施例提供的视频流发送方法流程图;
图2为本发明实施例提供的确定发送当前待发送帧所需的理论发送总时长的方式流程图之一;
图3为本发明实施例提供的确定发送当前待发送帧所需的理论发送总时长的方式流程图之二;
图4为本发明实施例提供的确定发送当前待发送帧所需的理论发送总时长的方式流程图之三;
图5为本发明实施例提供的根据每次发送帧数据时刻确定是否休眠的方法流程图;
图6为本发明实施例提供的实施例一的实施过程流程图;
图7为本发明实施例提供的实施例三的实施过程流程图;
图8为本发明实施例提供的实施例四的实施过程流程图;
图9为本发明实施例提供的视频流发送装置示意图。
具体实施方式
下面结合附图和实施例对本发明提供的视频流发送方法及装置进行更详细地说明。
本发明实施例提供一种视频流发送方法,如图1所示,包括:
步骤101,针对视频流中的每一帧,确定发送当前待发送帧所需的理论发送总时长。
具体的,根据关键帧间隔以及当前待发送帧对应的数据量确定当前待发送帧的理论发送总时长。
步骤102,根据理论发送总时长以及预设的缓冲系数,确定发送当前待发送帧所需的休眠总时长,预设的缓冲系数预先根据视频流的码流确定。
具体的,发送当前待发送帧所需的理论发送总时长乘以预设的缓冲系数得到的结果为发送当前待发送帧所需要的休眠总时长。预设的缓冲系数用于反映发送当前待发送帧所需要休眠总时长的大小,在发送当前待发送帧所需要的理论发送总时长不变的情况下,预设的缓冲系数越大,发送当前待发送帧所需要的休眠总时长越长;反之,预设的缓冲系数越小,发送当前待发送帧所需要的休眠总时长越短。
采用如下方式根据视频流的码流确定预设的缓冲系数:
根据预先建立的码流与缓冲系数的对应关系以及当前视频流的码流,确定该码流对应的缓冲系数,将该缓冲系数确定为预设的缓冲系数。
根据视频流的码流确定预设的缓冲系数的步骤可在步骤101之前执行,或者与步骤101同时执行,这里不做限定。
具体的,可建立码流与缓冲系数的对应关系,根据所要发送的视频流的码流与建立的码流与缓冲系数的对应关系,确定所使用的预设的缓冲系数,其中,发送当前待发送帧所需的理论发送总时长是固定的,码流越大,实际发送当前待发送帧所需要的时长就越长,发送当前待发送帧所需的休眠总时长越短,因此,码流越大的视频流对应的缓冲系数越小,比如:视频流的码流为2Mb/s时,预设的缓冲系数为0.97;视频流的码流为2Mb/s-4Mb/s时,预设的缓冲系数为0.94;视频流的码流为6Mb/s-8Mb/s时,预设的缓冲系数为0.90。
步骤103,根据休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M。
其中,每发送一次数据就会休眠一次,如果系统的休眠精度为10ms,则每发一次数据就会休眠10ms,系统的休眠精度即单次休眠时长。具体的,计算所述休眠总时长除以单次休眠时长所得的商,将该商取整后作为发送当前待发送帧所需的休眠次数M,比如该商等于4.5,则M取值为5,即该商向上取整。
步骤104,将当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。
具体的,一次数据发送完成后就要进行一次休眠。如果本次对应的帧数据发送完成后,进行一次休眠,即间隔所述单次休眠时长后,进行下一次对应的帧数据的发送。
本发明实施例,由于将当前待发送帧分为多次发送,并且每次发送完成后进行一次休眠,避免了由于单个帧的数据量较大且当带宽不能满足发送该帧数据的情况下,而出现的大量的丢包现象,进而可保证视频流的正常解码,避免产生花屏、卡顿甚至黑屏等问题,提高了用户体验。本发明实施例提供的视频流发送方法不需要提高当前带宽或者降低码流或者在编码层减少帧数据量,就能够实现视频流的平滑发送。
将当前待发送帧对应的帧数据分为M次发送出去,具体包括:
计算当前待发送帧对应的帧数据的数据量除以所需要的发送次数M所得的商和余数;
确定余数为0时,每次发送的帧数据的数据量为该商;
确定余数不为0时,将余数对应的数据量在所述M次中的至少一次发送数据的过程中发送出去。
举例说明,如果余数为5,发送次数M为10,商为10,可将该余数划分为5份,每份的大小为1,将前5次发送的帧数据的大小确定为11,后五次发送的帧数据的大小均为10。
优选地,可基于UDP数据包将当前待发送帧发送出去,此时每次发送的UDP数据包的个数可采用如下方式确定:
假设一个UDP数据包能够承载1KB数据量,当前待发送帧对应的数据量大小为500KB,发送当前待发送帧所需要的发送次数M为94次,那么,发送当前待发送帧所需要的UDP数据包的个数为500个;将500除以94得到的商为5,余数为30,此时可将前30次发送数据对应的UDP数据包个数确定为6个,之后的64次,每次发送的UDP数据包的个数为5个。即,有余数时,将余数划分为若干份,每次对应的数据量都为整数,并将各份数据量分摊到发送次数M中的若干次中发送出去,从而实现当前待发送帧的发送。
具体的,如图2所示,当前待发送帧为关键帧时,步骤101确定发送当前待发送帧所需的理论发送总时长,具体包括:
步骤201,根据视频流的帧率以及关键帧间隔,确定发送两个关键帧的间隔时间。
具体的,视频流的帧率指每秒播放的帧数,本发明实施例中发送两个关键帧的间隔时间等于关键帧间隔除以帧率。
步骤202,将当前待发送关键帧对应的权重与所述间隔时间的乘积,确定为发送当前待发送关键帧所需的理论发送总时长。
具体的,步骤201中计算得到的间隔时间为发送一个关键帧间隔中的所有帧所需要的时间,一个关键帧间隔包括一个关键帧以及若干个非关键帧,该若干个非关键帧位于两个关键帧之间。当前待发送帧对应的权重即发送该帧数据所占用的间隔时间的比重,不同的待发送帧对应的权重有可能不同也有可能相同,具体的权重取值可根据经验或实际应用场景取值,比如:关键帧间隔中的关键帧数据量较大,其对应的权重较大,该关键帧间隔中的非关键对应的权重也可根据数据量大小设定。
优选地,当前待发送关键帧对应的权重采用如下方式确定:
确定所述当前待发送关键帧为所述视频流中的第一个关键帧时,所述当前待发送关键帧对应的权重采用预设值。具体的,该预设值可根据经验取值,取值范围优选为0.3-0.6。
确定所述当前待发送关键帧不是所述视频流中的第一个关键帧时,将所述当前待发送关键帧对应的数据量除以预设关键帧间隔中的所有帧对应的总数据量所得的结果,确定为所述当前待发送关键帧对应的权重,其中,预设关键帧间隔在所述当前待发送关键帧之前且与所述当前待发送关键帧相邻。
具体的,该预设关键帧间隔为当前待发送帧所在的关键帧间隔的前一个关键帧间隔,计算预设关键帧间隔中所有帧对应的总数据量,将当前待发送关键帧帧对应的数据量占预设关键帧间隔中所有帧对应的数据量的比重作为该当前待发送关键帧对应的权重。
本发明实施例,当前待发送关键帧不是视频流中的第一个关键帧时,根据当前待发送关键帧的前一个关键帧间隔中所有帧的数据量以及当前待发送关键帧的数据量确定当前待发送关键帧的权重。
优选地,如图3所示,当前待发送帧为非关键帧,即当前待发送帧为当前待发送非关键帧时,步骤101,确定发送当前待发送帧所需的理论发送总时长,具体包括:
步骤301,确定当前待发送非关键帧位于视频流中的第一个关键帧间隔时,计算间隔时间减去第一预设时长所得的第一差值,第一预设时长等于发送视频流中的第一个关键帧所需的理论发送总时长。
其中,间隔时间为预先根据视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间,即步骤201计算出的发送两个关键帧的间隔时间。
具体的,关键帧间隔中包括一个关键帧和若干个非关键帧,其中关键帧排在非关键帧之前,关键帧发送之后才能按顺序发送该关键帧间隔中的非关键帧。间隔时间减去发送关键帧所需的理论发送总时长得到的结果,就是发送该关键帧间隔中所有非关键帧所需要的时间。
步骤302,将第一差值除以第一个关键帧间隔中的非关键帧总个数得到的商,确定为发送当前待发送非关键帧所需的理论发送总时长。
本发明实施例中,当前待发送帧为视频流中第一个关键帧间隔中的非关键帧时,将发送该关键帧间隔中所有非关键帧所需要的时间除以该关键帧间隔中非关键帧的个数所得到的平均值,即步骤302中的商,作为发送所述当前待发送非关键帧所需的理论发送总时长。
进一步地,当前待发送帧为非关键帧且确定当前待发送非关键帧位于视频流中的第二个关键帧之后时,确定发送当前待发送帧所需的理论发送总时长,如图4所示,具体包括:
步骤401,计算间隔时间减去第二预设时长所得的第二差值,第二预设时长等于当前待发送非关键帧所在的关键帧间隔中,各个已发送帧所需的理论发送总时长之和。
其中,间隔时间为预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间,即步骤201计算出的发送两个关键帧的间隔时间。
具体的,同一视频流中各个关键帧间隔对应的间隔时间都相同。当前待发送非关键帧所在的关键帧间隔中各个已发送帧是指该关键帧间隔中所有已经发送的关键帧和非关键帧。比如,该关键帧间隔中已发送的帧为关键帧和第一非关键帧,该已发送的关键帧对应的理论发送总时长为T1,第一非关键帧对应的理论发送总时长为T2,那么各个已发送帧所需的理论发送总时长之和等于T1+T2。
步骤402,确定第二差值除以当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数所得的参考时长。
具体的,参考时长Tc的计算公式为,Tc=C2/N,其中,C2表示第二差值,N表示当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数。
步骤403,确定当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,将参考时长乘以第一系数所得的结果确定为发送当前待发送非关键帧所需的理论发送总时长。
具体的,视频流中的每帧对应一个第一阈值,该第一阈值可以根据经验设定,也可采用其他方式确定,这里不做限定。
步骤404,确定当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将参考时长乘以第二系数所得的结果确定为发送当前待发送非关键帧所需的理论发送总时长。
步骤405,确定当前待发送非关键帧对应的数据量大于等于第一阈值乘以第二倍数且小于等于第一阈值乘以第一倍数时,将参考时长确定为发送当前待发送非关键帧所需的理论发送总时长。
其中,第一系数大于1,第二系数大于0且小于1,第二倍数小于第一倍数,第一阈值为当前待发送非关键帧对应的第一阈值。
举例说明本发明实施例实施过程,假设当前待发送非关键帧对应的数据量为M,第一阈值为P,第一倍数为a,第二倍数为b,第一系数为x,第二系数为y,参考时长为Tc,其中,a大于b,x大于或等于1,y大于0且小于1,则,当M>P×a时,发送所述当前待发送非关键帧所需的理论发送总时长等于Tc×x;当M<P×b时,发送所述当前待发送非关键帧所需的理论发送总时长等于Tc×y;当P×b≤M≤P×a时,发送所述当前待发送非关键帧所需的理论发送总时长等于Tc。
本发明实施例,根据当前待发送非关键帧的数据量以及当前待发送非关键帧对应的第一阈值,分情况确定当前待发送非关键帧所需要的理论发送总时长,从而使得确定的当前待发送非关键帧所需要的理论发送总时长更加准确可靠。
优选地,在图4提供的实施例的基础上,确定所述当前待发送非关键帧为该当前待发送非关键帧所在的关键帧间隔中的第一个非关键帧时,采用如下方式确定所述第一阈值:
统计视频流中已发送的各个非关键帧对应的数据量之和除以已发送的非关键帧的个数所得的平均数据量,并将该平均数据量确定为所述第一阈值。
具体的,计算视频流中已发送的所有非关键帧对应的数据量之和,以及已发送的非关键帧的个数,从而计算每个已发送非关键帧对应的平均数据量,举例说明:当前视频流已发出两个关键帧间隔,则计算已发出的两个关键帧间隔中的所有非关键帧的个数,以及所有非关键帧对应的数据量之和,从而计算每个已发送非关键帧对应的平均数据量。将该平均数据量作为该当前待发送非关键帧对应的第一阈值。
进一步地,采用如下方式对第一阈值进行更新:
确定当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,或者,确定当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将第一阈值更新为当前待发送非关键帧对应的数据量,并将更新后的第一阈值作为下一个待发送非关键帧对应的第一阈值;
确定当前待发送非关键帧对应的数据量大于等于所述第一阈值的第二设定倍数且小于等于所述第一阈值的第一设定倍数时,将第一阈值作为下一个待发送非关键帧对应的第一阈值。
具体的,判断当前待发送非关键帧对应的数据量M是否大于等于所述第一阈值P的第二设定倍数b且小于等于所述第一阈值P的第一设定倍数a(即P×b≤M≤P×a);如果是,所述第一阈值不变,并作为确定发送下一个待发送非关键帧所需要的理论发送总时长时的第一阈值,即将该第一阈值作为下一个待发送非关键帧对应的第一阈值;否则,所述第一阈值更新为所述当前待发送非关键帧对应的数据量,并将更新后的第一阈值作为确定发送下一个待发送非关键帧所需要的理论发送总时长时的第一阈值,即将该更新后的第一阈值作为下一个待发送非关键帧对应的第一阈值。
具体的,在一个关键帧间隔中的第一个非关键对应的第一阈值确定后,根据本发明实施例提供的方案可得到该关键帧间隔中的其它非关键帧对应的第一阈值,从而计算该关键帧间隔中发送各个非关键帧所需的理论发送总时长。
本发明实施例,通过更新第一阈值,并将更新后的第一阈值作为下一个待发送关键帧对应的第一阈值,可使得所确定的待发送非关键帧的理论发送总时长更加精确。
优选地,如图5所示,本发明实施例提供的视频流发送方法,还包括:
步骤501,将开始发送当前待发送帧的时刻加上发送当前待发送帧所需的理论发送总时长得到的时刻,作为当前待发送帧发送完毕的截止时刻。
步骤502,当本次对应的帧数据发送完成并进行休眠前,记录本次对应的帧数据发送完成的时刻。
步骤503,确定本次对应的帧数据发送完成的时刻晚于所述截止时刻时,本次帧数据的发送不进行休眠,继续发送下一次对应的帧数据。
具体的,本发明实施例中,每完成一次帧数据的发送,记录本次本次帧数据发送完成的时刻,如果本次发送完成的时刻晚于截止时刻,则本次帧数据发送完成后不进行休眠,直接进行下一次帧数据的发送。
由于本次发送完成的时刻晚于截止时刻时,说明发送当前待发送帧的实际时长已经超出了当前待发送帧对应的理论发送总时长,此时为了节省时间,在之后的各次帧数据发送之后不进行休眠。
下面结合具体实施例,对本发明实施例提供的视频流发送方法进行详细说明。
实施例一
下面举例说明视频流中的第一个关键帧的发送方式,假设当前需要发送的视频流的码流大小为4Mb/s,该码流对应的缓冲系数为0.94,帧率为25帧/s,关键(I)帧间隔为50帧,一个I帧间隔中包括49个非I帧和一个I帧,系统休眠精度为10ms,则,发送该视频流的过程如图6所示,包括:
步骤601,根据帧率25帧/s和I帧间隔50帧,确定发送两个I帧的间隔时间为2000ms。
间隔时间=50/25=2s,即间隔时间为2000ms。
步骤602,检测到视频流中的第一个I帧时,将该I帧对应的权重设为0.5。
步骤603,根据两个I帧的间隔时间2000ms以及该I帧对应的权重0.5,确定发送该I帧所需的理论发送总时长为1000ms。
发送该I帧所需的理论发送总时长=2000ms×0.5=1000ms。
步骤604,根据理论发送总时长1000ms和预设的缓冲系数0.94,确定发送该I帧所需的休眠总时长940ms。
发送该I帧所需的休眠总时长=1000ms×0.94=940ms。
步骤605,根据发送该I帧所需的休眠总时长940ms以及系统休眠精度10ms,确定发送该I帧所需的休眠次数为94次。
发送该I帧所需的休眠次数=940ms/10ms。
步骤606,确定一个UDP数据包所能承载的数据量大小为1KB,该I帧对应的数据量为500KB,则确定发送该I帧需要500个UDP数据包。
步骤607,将500个UDP数据包分为94次发送出去,每次数据发送完成就进行一次休眠。
具体的,500/94=5余数为30,则可将前30次帧数据的发送,每次发送31个UDP数据包,后面64次则每次发送30个UDP数据包,从而实现将该I帧数据的分次发送。
视频流中的第一个I帧之后的I帧的发送方式与第一个I帧的发送方式类似,只是确定第一个I帧之后的I帧对应的权重的方式与第一个I帧不同,下面以第二个I帧为例说明确定给第二个I帧对应的权重的方式:
假设第二个I帧对应的数据量为600KB,将第二个I帧对应的数据量600KB除以预设I帧间隔中的所有帧对应的总数据量J所得的结果600/J,确定为第一个I帧对应的权重600/J,其中,预设I帧间隔为第一个I帧间隔。
视频流中确定其它I帧对应的权重的方式与确定第二个I帧对应的权重的方式类似,这里不做赘述。
实施例二
继续沿用实施例一中的各种假设,针对视频流中第一个I帧间隔中的各个非I帧,计算两个I帧的间隔时间减去第一预设时长所得的第一差值,所述第一预设时长等于发送所述视频流中的第一个I帧所需的理论发送总时长;将所述第一差值除以第一个I帧间隔中的非关键帧总个数49得到的商,确定为发送该I帧间隔中每个非I帧所需的理论发送总时长,分次发送每个非I帧的方式与步骤604-607类似,只是其中的具体数值会有所不同,这里不再赘述。
实施例三
继续沿用实施例一中的各种假设,并假设第二个I帧间隔中的I帧已发送完毕,下面说明确定发送第二个I帧间隔中的第一个非I帧所需的理论发送总时长的方式,假设第二个I帧间隔中的第一个非I帧对应的数据量为M,该第一个非I帧对应的第一阈值为P,第一倍数为a,第二倍数为b,第一系数为x,第二系数为y,参考时长为Tc,其中,a大于b,x大于或等于1,y大于0且小于1,如图7所示,包括:
步骤701,计算间隔时间2000ms减去发送第二个I帧所需的理论发送总时长1000ms所得的结果1000ms;
步骤702,确定1000ms除以第二个I帧间隔中所有待发送的非I帧个数49得到参考时长Tc=1000/49ms;
步骤703,统计该视频流中已发送的各个非I帧对应的数据量之和除以已发送的非I帧的个数所得的平均数据量,并将平均数据量确定为第一阈值P;
步骤704,判断第二个I帧间隔中的第一个非I帧对应的数据量M是否满足P×b≤M≤P×a,如果是,执行步骤705,否则,执行步骤706;
步骤705,确定发送第一个非I帧所需的理论发送总时长等于Tc,并将所述第一阈值作为第二个非I帧对应的一阈值;
步骤706,确定M满足M>P×a时,确定发送第一个非I帧所需的理论发送总时长等于Tc×x,并将所述第一阈值更新为M,将更新后的第一阈值作为第二个非I帧对应的第一阈值;
步骤707,确定M满足M<P×b时,确定发送第一个非I帧所需的理论发送总时长等于Tc×y,并将所述第一阈值更新为M,将更新后的第一阈值作为第二个非I帧对应的第一阈值。
具体的,发送第二个I帧间隔中的第一个非I帧所需的理论发送总时长确定后,分次发送该第一个非I帧的方式与步骤604-步骤607类似,这里不做详述。
实施例四
下面在实施例三的基础上,说明确定发送第二个I帧间隔中的第二个非I帧所需的理论发送总时长的方式,假设第二个I帧间隔中的第二个非I帧对应的数据量为M1,第二个非I帧对应的第一阈值为P1,第一倍数为a,第二倍数为b,第一系数为x,第二系数为y,参考时长为Tc,其中,a大于b,x大于或等于1,y大于0且小于1,如图8所示,包括:
步骤801,计算间隔时间2000ms减去第二预设时长所得的第二差值,该第二预设时长为发送第二个I帧间隔中的I帧所需的理论发送总时长以及发送第二个I帧间隔中第一个I帧所需的理论发送总时长之和。
步骤802,确定第二差值除以第二个I帧间隔中所有待发送的非I帧个数48得到参考时长;
步骤803,获取第二个非I帧对应的第一阈值P1;
步骤804,判断第二个非I帧对应的数据量M1是否满足P1×b≤M1≤P1×a,如果是,执行步骤805,否则,执行步骤806;
步骤805,确定发送第二个非I帧所需的理论发送总时长等于Tc,并将所述第一阈值P1作为发送第三个非I帧对应的第一阈值;
步骤806,确定M1满足M1>P1×a时,确定发送第二个非I帧所需的理论发送总时长等于Tc×x,将第一阈值P1更新为M1,并将更新后的第一阈值P1作为第三个非I帧对应的第一阈值;
步骤807,确定M1满足M1<P1×b时,确定发送第二个非I帧所需的理论发送总时长等于Tc×y,将所述第一阈值更新为M1,并将更新后的第一阈值作为第三个非I帧对应的第一阈值。
具体的,发送第二个I帧间隔中的第二个非I帧所需的理论发送总时长确定后,分次发送该第二个非I帧的方式与步骤604-步骤607类似,这里不做详述。
第二个I帧间隔中第二个非I帧之后的非I帧的发送方式与发送第二个非I帧的方式类似,这里不做赘述。
发送第二个I帧间隔后的各个I帧间隔中的非I帧的方式与发送第二个I帧间隔中的非I帧的方式类似,这里不做赘述。
基于与本发明实施例提供的视频流发送方法同样的发明构思,本发明还提供一种视频流发送装置,如图9所示,包括:
第一确定单元901,用于针对视频流中的每一帧,确定发送当前待发送帧所需的理论发送总时长;
第二确定单元902,用于根据理论发送总时长以及预设的缓冲系数,确定发送当前待发送帧所需的休眠总时长,所述预设的缓冲系数预先根据所述视频流的码流确定;
第三确定单元903,用于根据休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M;
发送单元904,用于将当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。
所述装置中,所述第一确定单元具体用于:
在当前待发送帧为关键帧时,根据视频流的帧率以及关键帧间隔,确定发送两个关键帧的间隔时间;
将当前待发送关键帧对应的权重与所述间隔时间的乘积,确定为发送当前待发送关键帧所需的理论发送总时长。
所述装置中,所述第一确定单元采用如下方式确定当前待发送关键帧对应的权重:
确定当前待发送关键帧为视频流中的第一个关键帧时,当前待发送关键帧对应的权重采用预设值;
确定当前待发送关键帧不是视频流中的第一个关键帧时,将当前待发送关键帧对应的数据量除以预设关键帧间隔中的所有帧对应的总数据量所得的结果,确定为当前待发送关键帧对应的权重,其中,预设关键帧间隔在当前待发送关键帧之前且与当前待发送关键帧相邻。
所述装置中,所述第一确定单元具体用于:
在所述当前待发送帧为非关键帧时,且确定当前待发送非关键帧位于视频流中的第一个关键帧间隔时,计算所述间隔时间减去第一预设时长所得的第一差值,第一预设时长等于发送视频流中的第一个关键帧所需的理论发送总时长,间隔时间为所述第一确定单元预先根据视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
将第一差值除以第一个关键帧间隔中的非关键帧总个数得到的商,确定为发送当前待发送非关键帧所需的理论发送总时长。
所述装置中,所述第一确定单元具体用于:
当前待发送帧为非关键帧时,确定所述当前待发送非关键帧位于视频流中的第二个关键帧之后时,计算间隔时间减去第二预设时长所得的第二差值,第二预设时长等于当前待发送非关键帧所在的关键帧间隔中,各个已发送帧所需的理论发送总时长之和,间隔时间为所述第一确定单元预先根据视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
确定第二差值除以当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数所得的参考时长;
确定当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,将参考时长乘以第一系数所得的结果确定为发送当前待发送非关键帧所需的理论发送总时长;
确定当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将参考时长乘以第二系数所得的结果确定为发送当前待发送非关键帧所需的理论发送总时长;
确定当前待发送非关键帧对应的数据量大于等于第一阈值乘以第二倍数且小于等于第一阈值乘以第一倍数时,将参考时长确定为发送当前待发送非关键帧所需的理论发送总时长;
其中,第一系数大于1,第二系数大于0且小于1,第二倍数小于第一倍数,第一阈值为当前待发送非关键帧对应的第一阈值。
所述装置中,所述第一单元在确定所述当前待发送非关键帧为该当前待发送非关键帧所在的关键帧间隔中的第一个非关键帧时,采用如下方式确定所述第一阈值:
统计视频流中已发送的各个非关键帧对应的数据量之和除以已发送的非关键帧的个数所得的平均数据量,并将该平均数据量确定为第一阈值。
所述装置,所述第一确定单元还用于:
确定当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,或者,确定当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将第一阈值更新为当前待发送非关键帧对应的数据量,并将更新后的第一阈值作为下一个待发送非关键帧对应的第一阈值;
确定当前待发送非关键帧对应的数据量大于等于所述第一阈值的第二设定倍数且小于等于所述第一阈值的第一设定倍数时,将第一阈值作为下一个待发送非关键帧对应的第一阈值。
所述装置,还包括:
时刻确定单元,用于将开始发送当前待发送帧的时刻加上发送当前待发送帧所需的理论发送总时长得到的时刻,作为当前待发送帧发送完毕的截止时刻;当本次对应的帧数据发送完成并进行休眠前,记录本次对应的帧数据发送完成的时刻;确定本次对应的帧数据发送完成的时刻晚于所述截止时刻时,本次帧数据的发送不进行休眠,继续发送下一次对应的帧数据。
利用本发明提供视频流发送方法及装置,具有以下有益效果:通过将当前待发送帧分为多次发送,避免了由于单个帧的数据量较大且当带宽不能满足发送该帧数据的情况下,而出现的大量的丢包现象,进而可保证视频流的正常解码,避免产生花屏、卡顿甚至黑屏等问题,提高了用户体验。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (16)
1.一种视频流发送方法,其特征在于,包括:
针对所述视频流中的每一帧,确定发送当前待发送帧所需的理论发送总时长;
根据所述理论发送总时长以及预设的缓冲系数,确定发送所述当前待发送帧所需的休眠总时长,所述预设的缓冲系数预先根据所述视频流的码流确定;
根据所述休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M;
将所述当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。
2.如权利要求1所述的方法,其特征在于,所述当前待发送帧为关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
根据所述视频流的帧率以及关键帧间隔,确定发送两个关键帧的间隔时间;
将当前待发送关键帧对应的权重与所述间隔时间的乘积,确定为发送所述当前待发送关键帧所需的理论发送总时长。
3.如权利要求2所述的方法,其特征在于,所述当前待发送关键帧对应的权重采用如下方式确定:
确定所述当前待发送关键帧为所述视频流中的第一个关键帧时,所述当前待发送关键帧对应的权重采用预设值;
确定所述当前待发送关键帧不是所述视频流中的第一个关键帧时,将所述当前待发送关键帧对应的数据量除以预设关键帧间隔中的所有帧对应的总数据量所得的结果,确定为所述当前待发送关键帧对应的权重,其中,预设关键帧间隔在所述当前待发送关键帧之前且与所述当前待发送关键帧相邻。
4.如权利要求1所述的方法,其特征在于,所述当前待发送帧为非关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
确定当前待发送非关键帧位于所述视频流中的第一个关键帧间隔时,计算间隔时间减去第一预设时长所得的第一差值,所述第一预设时长等于发送所述视频流中的第一个关键帧所需的理论发送总时长,所述间隔时间为预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
将所述第一差值除以第一个关键帧间隔中的非关键帧总个数得到的商,确定为发送所述当前待发送非关键帧所需的理论发送总时长。
5.如权利要求1所述的方法,其特征在于,所述当前待发送帧为非关键帧时,确定发送当前待发送帧所需的理论发送总时长,具体包括:
确定当前待发送非关键帧位于所述视频流中的第二个关键帧之后时,计算间隔时间减去第二预设时长所得的第二差值,所述第二预设时长等于当前待发送非关键帧所在的关键帧间隔中,各个已发送帧所需的理论发送总时长之和,所述间隔时间为预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
确定所述第二差值除以当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数所得的参考时长;
确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,将所述参考时长乘以第一系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述参考时长乘以第二系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
确定所述当前待发送非关键帧对应的数据量大于等于第一阈值乘以第二倍数且小于等于第一阈值乘以第一倍数时,将所述参考时长确定为发送所述当前待发送非关键帧所需的理论发送总时长;
其中,第一系数大于1,第二系数大于0且小于1,第二倍数小于第一倍数,所述第一阈值为所述当前待发送非关键帧对应的第一阈值。
6.如权利要求5所述的方法,其特征在于,确定所述当前待发送非关键帧为该当前待发送非关键帧所在的关键帧间隔中的第一个非关键帧时,采用如下方式确定所述第一阈值:
统计所述视频流中已发送的各个非关键帧对应的数据量之和除以已发送的非关键帧的个数所得的平均数据量,并将所述平均数据量确定为所述第一阈值。
7.如权利要求6所述的方法,其特征在于,还包括:
确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,或者,确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述第一阈值更新为所述当前待发送非关键帧对应的数据量,并将所述更新后的第一阈值作为下一个待发送非关键帧对应的第一阈值;
确定所述当前待发送非关键帧对应的数据量大于等于所述第一阈值的第二设定倍数且小于等于所述第一阈值的第一设定倍数时,将所述第一阈值作为下一个待发送非关键帧对应的第一阈值。
8.如权利要求1所述的方法,其特征在于,还包括:
将开始发送当前待发送帧的时刻加上发送所述当前待发送帧所需的理论发送总时长得到的时刻,作为所述当前待发送帧发送完毕的截止时刻;
当本次对应的帧数据发送完成并进行休眠前,记录本次对应的帧数据发送完成的时刻;
确定本次对应的帧数据发送完成的时刻晚于所述截止时刻时,本次帧数据的发送不进行休眠,继续发送下一次对应的帧数据。
9.一种视频流发送装置,其特征在于,包括:
第一确定单元,用于针对所述视频流中的每一帧,确定发送当前待发送帧所需的理论发送总时长;
第二确定单元,用于根据所述理论发送总时长以及预设的缓冲系数,确定发送所述当前待发送帧所需的休眠总时长,所述预设的缓冲系数预先根据所述视频流的码流确定;
第三确定单元,用于根据所述休眠总时长以及单次休眠时长,确定发送当前待发送帧所需的休眠次数M;
发送单元,用于将所述当前待发送帧对应的帧数据分为M次发送出去,其中,确定本次对应的帧数据发送完成后,间隔所述单次休眠时长进行下一次对应的帧数据的发送。
10.如权利要求9所述的装置,其特征在于,所述第一确定单元具体用于:
在所述当前待发送帧为关键帧时,根据所述视频流的帧率以及关键帧间隔,确定发送两个关键帧的间隔时间;
将当前待发送关键帧对应的权重与所述间隔时间的乘积,确定为发送所述当前待发送关键帧所需的理论发送总时长。
11.如权利要求10所述的装置,其特征在于,所述第一确定单元采用如下方式确定所述当前待发送关键帧对应的权重:
确定所述当前待发送关键帧为所述视频流中的第一个关键帧时,所述当前待发送关键帧对应的权重采用预设值;
确定所述当前待发送关键帧不是所述视频流中的第一个关键帧时,将所述当前待发送关键帧对应的数据量除以预设关键帧间隔中的所有帧对应的总数据量所得的结果,确定为所述当前待发送关键帧对应的权重,其中,预设关键帧间隔在所述当前待发送关键帧之前且与所述当前待发送关键帧相邻。
12.如权利要求9所述的装置,其特征在于,所述第一确定单元具体用于:
在所述当前待发送帧为非关键帧时,且确定当前待发送非关键帧位于所述视频流中的第一个关键帧间隔时,计算间隔时间减去第一预设时长所得的第一差值,所述第一预设时长等于发送所述视频流中的第一个关键帧所需的理论发送总时长,所述间隔时间为所述第一确定单元预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
将所述第一差值除以第一个关键帧间隔中的非关键帧总个数得到的商,确定为发送所述当前待发送非关键帧所需的理论发送总时长。
13.如权利要求9所述的装置,其特征在于,所述第一确定单元具体用于:
所述当前待发送帧为非关键帧时,且确定当前待发送非关键帧位于所述视频流中的第二个关键帧之后时,计算间隔时间减去第二预设时长所得的第二差值,所述第二预设时长等于当前待发送非关键帧所在的关键帧间隔中,各个已发送帧所需的理论发送总时长之和,所述间隔时间为所述第一确定单元预先根据所述视频流的帧率以及关键帧间隔确定的发送两个关键帧的间隔时间;
确定所述第二差值除以当前待发送非关键帧所在的关键帧间隔中所有待发送非关键帧的个数所得的参考时长;
确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,将所述参考时长乘以第一系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述参考时长乘以第二系数所得的结果确定为发送所述当前待发送非关键帧所需的理论发送总时长;
确定所述当前待发送非关键帧对应的数据量大于等于第一阈值乘以第二倍数且小于等于第一阈值乘以第一倍数时,将所述参考时长确定为发送所述当前待发送非关键帧所需的理论发送总时长;
其中,第一系数大于1,第二系数大于0且小于1,第二倍数小于第一倍数,所述第一阈值为所述当前待发送非关键帧对应的第一阈值。
14.如权利要求13所述的装置,其特征在于,所述第一确定单元在确定所述当前待发送非关键帧为该当前待发送非关键帧所在的关键帧间隔中的第一个非关键帧时,采用如下方式确定所述第一阈值:
统计所述视频流中已发送的各个非关键帧对应的数据量之和除以已发送的非关键帧的个数所得的平均数据量,并将所述平均数据量确定为所述第一阈值。
15.如权利要求14所述的装置,其特征在于,所述第一确定单元还用于:
确定所述当前待发送非关键帧对应的数据量大于第一阈值乘以第一倍数时,或者,确定所述当前待发送非关键帧对应的数据量小于第一阈值乘以第二倍数时,将所述第一阈值更新为所述当前待发送非关键帧对应的数据量,并将所述更新后的第一阈值作为下一个待发送非关键帧对应的第一阈值;
确定所述当前待发送非关键帧对应的数据量大于等于所述第一阈值的第二设定倍数且小于等于所述第一阈值的第一设定倍数时,将所述第一阈值作为下一个待发送非关键帧对应的第一阈值。
16.如权利要求9所述的装置,其特征在于,还包括:
时刻确定单元,用于将开始发送当前待发送帧的时刻加上发送所述当前待发送帧所需的理论发送总时长得到的时刻,作为所述当前待发送帧发送完毕的截止时刻;当本次对应的帧数据发送完成并进行休眠前,记录本次对应的帧数据发送完成的时刻;确定本次对应的帧数据发送完成的时刻晚于所述截止时刻时,本次帧数据的发送不进行休眠,继续发送下一次对应的帧数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510881614.XA CN105554517B (zh) | 2015-12-03 | 2015-12-03 | 一种视频流发送方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510881614.XA CN105554517B (zh) | 2015-12-03 | 2015-12-03 | 一种视频流发送方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105554517A CN105554517A (zh) | 2016-05-04 |
CN105554517B true CN105554517B (zh) | 2018-09-28 |
Family
ID=55833422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510881614.XA Active CN105554517B (zh) | 2015-12-03 | 2015-12-03 | 一种视频流发送方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105554517B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107085537B (zh) * | 2017-03-22 | 2019-03-15 | 武汉斗鱼网络科技有限公司 | Flash应用在休眠模式下的运行方法及系统 |
JP6974712B2 (ja) * | 2017-10-24 | 2021-12-01 | 富士通株式会社 | 探索方法、探索装置および探索プログラム |
CN110213614B (zh) * | 2019-05-08 | 2021-11-02 | 北京字节跳动网络技术有限公司 | 从视频文件中提取关键帧的方法和装置 |
CN111757151B (zh) * | 2020-06-30 | 2022-08-19 | 平安国际智慧城市科技股份有限公司 | 基于rtp协议的视频流发送方法、装置、设备和介质 |
CN115696514A (zh) * | 2021-07-23 | 2023-02-03 | 维沃移动通信有限公司 | 图像帧的传输方法和设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005102053A (ja) * | 2003-09-26 | 2005-04-14 | Sanyo Electric Co Ltd | 映像表示装置 |
US7299487B1 (en) * | 2001-12-04 | 2007-11-20 | Unisys Corporation | Control program, for a co-processor in a video-on-demand system, which uses transmission control lists to send video data packets with respective subgroups of internet protocol headers |
CN101296184A (zh) * | 2008-05-30 | 2008-10-29 | 华为技术有限公司 | 一种数据传输的方法、系统及装置 |
CN101916219A (zh) * | 2010-07-05 | 2010-12-15 | 南京大学 | 一种片上多核网络处理器流媒体演示平台 |
CN102045552A (zh) * | 2009-10-14 | 2011-05-04 | 中兴通讯股份有限公司 | 一种多媒体码流发送的方法和系统 |
CN102497578A (zh) * | 2011-11-25 | 2012-06-13 | 武汉大学 | 一种3g网络环境下的移动音视频实时通信方法 |
CN104780401A (zh) * | 2015-03-25 | 2015-07-15 | 腾讯科技(深圳)有限公司 | 视频数据的发送方法及装置 |
CN104918133A (zh) * | 2014-03-12 | 2015-09-16 | 北京视联动力国际信息技术有限公司 | 一种视联网中视频流的播放方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5257373B2 (ja) * | 2010-01-29 | 2013-08-07 | ブラザー工業株式会社 | パケット送信装置、パケット送信方法及びパケット送信プログラム |
-
2015
- 2015-12-03 CN CN201510881614.XA patent/CN105554517B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7299487B1 (en) * | 2001-12-04 | 2007-11-20 | Unisys Corporation | Control program, for a co-processor in a video-on-demand system, which uses transmission control lists to send video data packets with respective subgroups of internet protocol headers |
JP2005102053A (ja) * | 2003-09-26 | 2005-04-14 | Sanyo Electric Co Ltd | 映像表示装置 |
CN101296184A (zh) * | 2008-05-30 | 2008-10-29 | 华为技术有限公司 | 一种数据传输的方法、系统及装置 |
CN102045552A (zh) * | 2009-10-14 | 2011-05-04 | 中兴通讯股份有限公司 | 一种多媒体码流发送的方法和系统 |
CN101916219A (zh) * | 2010-07-05 | 2010-12-15 | 南京大学 | 一种片上多核网络处理器流媒体演示平台 |
CN102497578A (zh) * | 2011-11-25 | 2012-06-13 | 武汉大学 | 一种3g网络环境下的移动音视频实时通信方法 |
CN104918133A (zh) * | 2014-03-12 | 2015-09-16 | 北京视联动力国际信息技术有限公司 | 一种视联网中视频流的播放方法和装置 |
CN104780401A (zh) * | 2015-03-25 | 2015-07-15 | 腾讯科技(深圳)有限公司 | 视频数据的发送方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105554517A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105554517B (zh) | 一种视频流发送方法及装置 | |
CN106330757B (zh) | 流量控制方法及装置 | |
EP3606050A1 (en) | Video frame coding method, terminal, and storage medium | |
JP2009504052A5 (zh) | ||
CN108513342B (zh) | 一种物联网终端的调度方法、基站及物联网终端 | |
EP2696543A1 (en) | Calculating credit for controlling data frame transmission | |
CN105262699A (zh) | 一种网络自适应编码调整方法及装置 | |
JP2010028654A (ja) | 通信装置及びoamフレーム送信方法 | |
CN112929366A (zh) | 无线游戏协议 | |
CN102804714A (zh) | 控制分组传输 | |
CN102547214B (zh) | 一种多人视频通信中的视频编码方法以及终端 | |
US20230179534A1 (en) | Data packet scheduling method and related apparatus | |
CN112769714B (zh) | 工程机械及其网络优化方法和装置 | |
WO2021164670A1 (zh) | 视频编码方法、装置、设备及存储介质 | |
KR20070119036A (ko) | 가속 백오프 기능을 포함하는 무선 랜 송신 스케줄러 | |
CN105656800A (zh) | 一种传输报文的方法及装置 | |
CN111601178B (zh) | 视频数据处理方法、装置和电子设备 | |
CN105991476B (zh) | 一种语音数据延时处理方法及装置 | |
CN102739510A (zh) | 一种流控方法和装置 | |
CN103828294A (zh) | 基于信用的功率管理 | |
CN117097679A (zh) | 一种网络中断的聚合方法、装置及网络通信设备 | |
CN112491573A (zh) | 一种网络参数配置方法及装置 | |
CN103701634B (zh) | 一种传输多媒体数据的方法及装置 | |
CN106034347B (zh) | 一种无线通讯管理方法及装置 | |
CN107926061A (zh) | 一种退避方法、传输消息方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |