[0055] 示例性的,若当前会话方的网络带宽为BW,待传输视频的不同视频帧类型包括I帧和P帧,待传输视频在I帧下的初始传输码率为aI,在P帧下的初始传输码率为aP,且I帧在P帧后抽帧,此时若aI
[0056] S320,将位于目标视频帧类型之后的视频帧类型下的抽帧比例设定为非抽帧值,位于目标视频帧类型之前的视频帧类型下的抽帧比例设定为全抽帧值。
[0057] 可选的,由于抽帧顺序在前的视频帧类型下的视频帧可能需要参考抽帧顺序在后的视频帧类型下的某一视频帧进行解码,此时为了保证传输后视频帧的成功解码,在抽帧时需要保证在将抽帧顺序在前的视频帧类型下的视频帧必须全部抽取后,再去抽取抽帧顺序在后的视频帧类型下的视频帧,因此本实施例在确定该网络带宽匹配的最后一级待抽帧的目标视频帧类型后,直接根据不同视频帧类型的抽帧顺序,将位于该目标视频帧类型之后的视频帧类型下的抽帧比例设定为非抽帧值,也就是在该视频帧类型下抽取全部视频帧,使得无需向当前会话方传输该视频帧类型下的视频帧;同时将位于目标视频帧类型之前的视频帧类型下的抽帧比例设定为全抽帧值,也就是在该视频帧类型下不抽取任何视频帧,使得向当前会话方传输该视频帧类型下的全部视频帧。
[0058] 示例性的,若待传输视频的不同视频帧类型包括I帧和P帧,且目标视频帧类型为P帧,此时将在I帧下的抽帧比例设定为0,后续确定P帧下的具体抽帧比例。
[0059] S330,确定待传输视频在排除位于目标视频帧类型之前的视频帧类型下的全部视频帧后继续在目标视频帧类型下抽帧后的目标传输总码率与网络带宽最匹配时该目标视频帧类型下的抽帧比例。
[0060] 具体的,在确定待传输视频在目标视频帧类型下的抽帧比例时,首先需要在待传输视频中排除位于目标视频帧类型之前的视频帧类型下的全部视频帧,以便准确模拟实际的视频传输,从而确定排除后的剩余传输总码率,根据排除后的剩余传输总码率与当前会话方的网络带宽之间的匹配情况,继续在目标视频帧类型下选用相应的初始抽帧比例进行抽帧,并计算在该目标视频帧类型下抽帧后剩余的目标传输总码率,进而判断该目标传输总码率与当前会话方的网络带宽的匹配程度,并将排除位于目标视频帧类型之前的视频帧类型下的全部视频帧且在该目标视频帧类型下进行抽帧后剩余的目标传输总码率与该网络带宽最匹配时,该目标视频帧类型下选用的初始抽帧比例作为本实施例中最终在该目标视频帧类型下的抽帧比例。
[0061] 示例性的,本实施例中可以采用二分查找算法不断优化计算目标视频帧类型下的抽帧比例,刚开始将目标视频帧类型下的最大抽帧比例max_pro设置为100%,最小抽帧比例min_pro设置为0,此时确定初始抽帧比例为(max_pro+min_pro)/2,进而判断排除位于目标视频帧类型之前的视频帧类型下的全部视频帧且在该目标视频帧类型下按照(max_pro+min_pro)/2的初始抽帧比例进行抽帧后剩余的目标传输总码率与网络带宽的匹配情况,如果网络带宽大于该目标传输总码率,说明初始抽帧比例(max_pro+min_pro)/2过大,则将最大抽帧比例max_pro
修改为(max_pro+min_pro)/2,最小抽帧比例min_pro仍为0,继续根据新的最大抽帧比例或最小抽帧比例来更新对应的初始抽帧比例,再次判断抽帧后剩余的目标传输总码率与网络带宽的匹配情况,依次循环,直至最终的最大抽帧比例与最小抽帧比例之间的差值能够达到规定
精度,此时使得剩余的目标传输总码率与网络带宽达到最匹配,则将当前的初始抽帧比例作为最终在该目标视频帧类型下的抽帧比例。
[0062] S340,按照不同视频帧类型下的抽帧比例向当前会话方传输待传输视频。
[0063] 本实施例提供的技术方案,在当前会话方的网络带宽小于待传输视频的初始传输总码率时,可以按照待传输视频中预设的不同视频帧类型的抽帧顺序,依次在待传输视频的对应视频帧类型下进行抽帧来降低待传输视频的初始传输总码率,此时通过对剩余传输总码率与网络带宽最匹配时对应的抽帧顺序靠前的视频帧类型进行完全抽帧,而对抽帧顺序靠后的视频帧类型完全保留,以在待传输视频的不同视频帧类型下抽取出多余的视频帧,保证并将抽帧后的待传输视频传输给当前会话方,保证传输后的视频帧能够成功解码,并使得待传输视频在抽帧后剩余的实际传输总码率与当前会话方的网络带宽最匹配,从而避免由于带宽不够产生关键帧丢包,而使解码失败造成播放卡顿的情况,减少视频传输过程中出现随机丢包或带宽浪费的情况,提高视频播放的流畅性,同时通过抽帧的方式降低待传输视频的初始传输总码率,而无需减少视频帧中所含的信息量,可以保证视频播放的清晰度不变。
[0064] 实施例三
[0065] 图4A为本发明实施例三提供的一种视频传输方法的流程图,图4B为本发明实施例三提供的视频传输过程的原理示意图。本实施例是在上述实施例的基础上进行优化,本实施例主要对于待传输视频在不同视频帧类型下的抽帧比例的具体计算过程进行详细的解释说明。
[0066] 可选的,如图4A所示,本实施例可以包括如下步骤:
[0067] S410,如果当前会话方的网络带宽小于待传输视频的初始传输总码率,则根据不同视频帧类型下每一其他会话方对应的初始传输子码率,确定每一视频帧类型下面向其他会话方的抽帧子顺序。
[0068] 具体的,由于针对当前会话方的待传输视频由当前会话方所在的视频会话间中各个其他会话方的上传视频组成,此时待传输视频在每一视频帧类型下均可以包括各个其他会话方的上传视频中在该视频帧类型下的视频帧,此时待传输视频在每一视频帧类型下的初始传输码率由各个其他会话方在该视频帧类型下对应的初始传输子码率合并得到,此时不同视频帧类型下其他会话方对应的初始传输子码率可以通过其他会话方的上传视频中在该视频帧类型下包含的信息量与预设时间间隔确定,可以采用平滑算法计算。
[0069] 示例性的,资源服务器会不断在预设时间间隔下接收到当前会话方所在的视频会话间中的各个其他会话方在该预设时间间隔内所采集的上传视频,并根据各个其他会话方的上传视频中每一视频帧的上传时间前后,将各上传视频中的视频帧顺序整合,得到针对当前会话方的待传输视频,同时可以记录整合后的每一视频帧的来源、视频帧类型以及所包含的信息量等,如图4B所示,以便后续计算不同视频帧类型下每一其他会话方对应的初始传输子码率。
[0070] 可选的,如果当前会话方的网络带宽小于待传输视频的初始传输总码率,本实施例可以根据预先为待传输视频中不同视频帧类型所设定的抽帧顺序,依次在对应视频帧类型下对该视频帧类型下的全部视频帧进行抽帧,此时由于不同视频帧类型下存在各个其他会话方在该视频帧类型下的视频帧,因此,为了尽可能保证多个其他会话方的视频完整播放,本实施例还可以根据不同视频帧类型下每一其他会话方对应的初始传输子码率,在每一视频帧类型下确定出面向各个其他会话方的抽帧子顺序,例如先抽取对应视频帧类型下初始传输子码率较高的其他会话方在该视频帧类型下的视频帧,再抽取初始传输子码率较低的其他会话方在该视频帧类型下的视频帧。
[0071] 此时,若当前会话方A所在的视频会话间中包括B、C和D三个其他会话方,此时当前会话方的网络带宽为BW,待传输视频的不同视频帧类型包括I帧和P帧,其他会话方B在I帧下的初始传输子码率为bi,在P帧下的初始传输子码率为bp,其他会话方C在I帧下的初始传输子码率为ci,在P帧下的初始传输子码率为cp,其他会话方D在I帧下的初始传输子码率为di,在P帧下的初始传输子码率为dp,此时待传输视频在I帧下的初始传输码率为bi+ci+di,在P帧下的初始传输码率为bp+cp+dp,进而按照在I帧和P帧下其他会话方对应的初始传输子码率的大小,确定I帧和P帧下面向其他会话方的抽帧子顺序。
[0072] S420,根据不同视频帧类型的抽帧顺序以及每一视频帧类型下的抽帧子顺序,确定待传输视频在对应视频帧类型下面向各其他会话方抽帧后的剩余传输总码率与网络带宽最匹配时不同视频帧类型下各其他会话方对应的抽帧子比例。
[0073] 具体的,本实施例可以按照不同视频帧类型的抽帧顺序,依次对待传输视频中各个视频帧类型进行抽帧,此时在对每一视频帧类型进行抽帧时,由于各个其他会话方在对应视频帧类型下均存在相应的视频帧,此时为了尽可能保证当前会话方对大多其他会话方的视频完整播放,本实施例可以根据每一视频帧类型下面向其他会话方的抽帧子顺序,依次按照该视频帧类型下各其他会话方对应的初始抽帧子比例在该视频帧类型下对应的其他会话方上传的各个视频帧中进行抽帧,并计算在待传输视频的每一视频帧类型下面向各其他会话方进行抽帧后的剩余传输总码率,进而判断该剩余传输总码率与当前会话方的网络带宽的匹配程度,并将该剩余传输总码率与该网络带宽最匹配时,该待传输视频在不同视频帧类型下面向各个其他会话方所选用的初始抽帧子比例作为本实施例中不同视频帧类型下各其他会话方对应的抽帧子比例。
[0074] 示例性的,本实施例中确定待传输视频在对应视频帧类型下面向各其他会话方抽帧后的剩余传输总码率与网络带宽最匹配时不同视频帧类型下各其他会话方对应的抽帧子比例,具体可以包括:根据不同视频帧类型下每一其他会话方对应的初始传输子码率,计算各视频帧类型下的初始传输码率,并确定网络带宽匹配的最后一级待抽帧的目标视频帧类型;将位于目标视频帧类型之后的视频帧类型下各其他会话方对应的抽帧子比例设定为非抽帧值,位于目标视频帧类型之前的视频帧类型下各其他会话方对应的抽帧子比例设定为全抽帧值;确定待传输视频在排除位于目标视频帧类型之前的视频帧类型下各其他会话方对应的全部视频帧后继续在目标视频帧类型下面向各其他会话方抽帧后的目标传输总码率与网络带宽最匹配时该目标视频帧类型下各其他会话方对应的抽帧子比例。
[0075] 具体的,如果当前会话方的网络带宽小于待传输视频的初始传输总码率,首先将每一视频帧类型下各个其他会话方对应的初始传输子码率合并,得到该视频帧类型下的初始传输码率,进而按照预先设定的不同视频帧类型的抽帧顺序以及每一视频帧类型下的初始传输码率,判断当前会话方的网络带宽在视频传输过程中所支持无需抽帧的视频帧类型,也就是在全部视频帧类型下按照对应的抽帧顺序确定出当前会话方的网络带宽匹配的最后一级待抽帧的目标视频帧类型。示例性的,若当前会话方A所在的视频会话间中包括B、C和D三个其他会话方,此时当前会话方的网络带宽为BW,待传输视频的不同视频帧类型包括I帧和P帧,其他会话方B在I帧下的初始传输子码率为bi,在P帧下的初始传输子码率为bp,其他会话方C在I帧下的初始传输子码率为ci,在P帧下的初始传输子码率为cp,其他会话方D在I帧下的初始传输子码率为di,在P帧下的初始传输子码率为dp,此时待传输视频在I帧下的初始传输码率为bi+ci+di,在P帧下的初始传输码率为bp+cp+dp。
[0076] 进一步的,在确定出最后一级待抽帧的目标视频帧类型后,将位于该目标视频帧类型之后的视频帧类型下各个其他会话方对应的抽帧子比例均设定为非抽帧值,位于该目标视频帧类型之前的视频帧类型下各个其他会话方对应的抽帧子比例均设定为全抽帧值;同时,在待传输视频中排除位于该目标视频帧类型之前的视频帧类型下各个其他会话方对应的全部视频帧,以便准确模拟实际的视频传输,从而确定排除后的剩余传输总码率,并根据该目标视频帧类型下面向各个其他会话方的抽帧子顺序,依次在该视频帧类型下各个其他会话方上传的视频帧中选用对应的初始抽帧子比例继续抽帧,并计算在该目标视频帧类型下面向各个其他会话方进行抽帧后剩余的目标传输总码率,进而判断该目标传输总码率与当前会话方的网络带宽的匹配程度,并将排除位于目标视频帧类型之前的视频帧类型下面向各个其他会话方的全部视频帧且在该目标视频帧类型下面向各个其他会话方进行抽帧后剩余的目标传输总码率与该网络带宽最匹配时,该目标视频帧类型下面向各个其他会话方选用的初始抽帧子比例作为本实施例中最终在该目标视频帧类型下各其他会话方对应的抽帧子比例;此时,本实施例中该目标视频帧类型下各其他会话方对应的抽帧子比例可以通过二分查找算法确定。
[0077] S430,将其他会话方的上传视频中根据不同视频帧类型下该其他会话方对应的抽帧子比例进行抽帧后剩余的视频帧添加至该其他会话方的下行发送窗口。
[0078] 可选的,在确定待传输视频在不同视频帧类型下各个其他会话方对应的抽帧子比例后,可以根据不同视频帧类型下各个其他会话方对应的抽帧子比例确定出每一视频帧类型下面向各个其他会话方所抽取的视频帧数量,进而确定每一视频帧类型下面向各个其他会话方所允许正常传输的视频帧数量,此时为了保证视频传输后各视频帧的正常解码,本实施例可以按照各个视频帧的上传时间顺序判断是否需要向当前会话方传输该视频帧,此时判断待传输的当前视频帧的会话方来源和视频帧类型,并确定在该视频帧类型下面向该其他会话方的当前已经向当前会话方成功传输的视频帧数量,在面向该其他会话方当前传输的视频帧数量未达到该视频帧类型下面向该其他会话方所允许正常传输的视频帧数量时,则将当前视频帧添加至该其他会话方的下行发送窗口中,也就是将根据每一其他会话方在各个视频类型下的抽帧子比例对该其他会话方的上传视频进行抽帧后剩余的不同视频帧类型下的各个视频帧添加至对应其他会话方的下行发送窗口中,以便后续下发给当前会话方。
[0079] S440,定时向当前会话方传输下行发送窗口中的视频帧。
[0080] 可选的,本实施例可以定时驱动各个其他会话方的下行发送窗口中的视频帧发送给当前会话方,保证网络带宽与传输码率的匹配度。
[0081] 本实施例提供的技术方案,在当前会话方的网络带宽小于待传输视频的初始传输总码率时,可以按照待传输视频中预设的不同视频帧类型的抽帧顺序以及每一视频帧类型下面向各个其他会话方的抽帧子顺序,依次在待传输视频的对应视频帧类型下的各个其他会话方的上传视频中进行抽帧来降低待传输视频的初始传输总码率,此时确定待传输视频在对应视频帧类型下面向各其他会话方抽帧后的剩余传输总码率与网络带宽最匹配时不同视频帧类型下各其他会话方对应的抽帧子比例,进而按照不同视频帧类型下面向各个其他会话方的抽帧子比例在各个其他会话方上传的在不同视频帧类型下的视频中抽取出多余的视频帧,并将抽帧后的待传输视频传输给当前会话方,使得待传输视频在抽帧后剩余的实际传输总码率与当前会话方的网络带宽最匹配,从而避免由于带宽不够产生关键帧丢包,而使解码失败造成播放卡顿的情况,减少视频传输过程中出现随机丢包或带宽浪费的情况,提高视频播放的流畅性,同时通过抽帧的方式降低待传输视频的初始传输总码率,而无需减少视频帧中所含的信息量,可以保证视频播放的清晰度不变。
[0082] 实施例四
[0083] 图5为本发明实施例四提供的一种视频传输装置的结构示意图,具体的,如图5所示,该装置可以包括:
[0084] 抽帧比例确定模块510,用于如果当前会话方的网络带宽小于待传输视频的初始传输总码率,则根据待传输视频中不同视频帧类型的抽帧顺序,确定在待传输视频的对应视频帧类型下抽帧后的剩余传输总码率与网络带宽最匹配时不同视频帧类型下的抽帧比例;
[0085] 视频传输模块520,用于按照不同视频帧类型下的抽帧比例向当前会话方传输待传输视频。
[0086] 本实施例提供的技术方案,在当前会话方的网络带宽小于待传输视频的初始传输总码率时,可以按照待传输视频中预设的不同视频帧类型的抽帧顺序,依次在待传输视频的对应视频帧类型下进行抽帧来降低待传输视频的初始传输总码率,此时确定依次在对应视频帧类型下抽帧后的剩余传输总码率与网络带宽最匹配时在不同视频帧类型下所选用的抽帧比例,进而按照不同视频帧类型下的抽帧比例在待传输视频的不同视频帧类型下抽取出多余的视频帧,并将抽帧后的待传输视频传输给当前会话方,使得待传输视频在抽帧后剩余的实际传输总码率与当前会话方的网络带宽最匹配,从而避免由于带宽不够产生关键帧丢包,而使解码失败造成播放卡顿的情况,减少视频传输过程中出现随机丢包或带宽浪费的情况,提高视频播放的流畅性,同时通过抽帧的方式降低待传输视频的初始传输总码率,而无需减少视频帧中所含的信息量,可以保证视频播放的清晰度不变。
[0087] 进一步的,上述待传输视频的初始传输总码率可以由待传输视频在不同视频帧类型下的初始传输码率合并得到。
[0088] 进一步的,上述抽帧比例确定模块510,可以具体用于:
[0089] 根据待传输视频中不同视频帧类型的抽帧顺序和不同视频帧类型下的初始传输码率,确定网络带宽匹配的最后一级待抽帧的目标视频帧类型;
[0090] 将位于目标视频帧类型之后的视频帧类型下的抽帧比例设定为非抽帧值,位于目标视频帧类型之前的视频帧类型下的抽帧比例设定为全抽帧值;
[0091] 确定待传输视频在排除位于目标视频帧类型之前的视频帧类型下的全部视频帧后继续在目标视频帧类型下抽帧后的目标传输总码率与网络带宽最匹配时该目标视频帧类型下的抽帧比例。
[0092] 进一步的,上述待传输视频可以由当前会话方所在的视频会话间中其他会话方的上传视频组成。
[0093] 进一步的,上述抽帧比例确定模块510,可以包括:
[0094] 子顺序确定单元,用于根据不同视频帧类型下每一其他会话方对应的初始传输子码率,确定每一视频帧类型下面向其他会话方的抽帧子顺序;
[0095] 子比例确定单元,用于根据不同视频帧类型的抽帧顺序以及每一视频帧类型下的抽帧子顺序,确定待传输视频在对应视频帧类型下面向各其他会话方抽帧后的剩余传输总码率与网络带宽最匹配时不同视频帧类型下各其他会话方对应的抽帧子比例。
[0096] 进一步的,上述子比例确定单元,可以具体用于:
[0097] 根据不同视频帧类型下每一其他会话方对应的初始传输子码率,计算各视频帧类型下的初始传输码率,并确定网络带宽匹配的最后一级待抽帧的目标视频帧类型;
[0098] 将位于目标视频帧类型之后的视频帧类型下各其他会话方对应的抽帧子比例设定为非抽帧值,位于目标视频帧类型之前的视频帧类型下各其他会话方对应的抽帧子比例设定为全抽帧值;
[0099] 确定待传输视频在排除位于目标视频帧类型之前的视频帧类型下各其他会话方对应的全部视频帧后继续在目标视频帧类型下面向各其他会话方抽帧后的目标传输总码率与网络带宽最匹配时该目标视频帧类型下各其他会话方对应的抽帧子比例。
[0100] 进一步的,上述目标视频帧类型下各其他会话方对应的抽帧子比例可以通过二分查找算法确定。
[0101] 进一步的,上述视频传输模块520,可以具体用于:
[0102] 将其他会话方的上传视频中根据不同视频帧类型下该其他会话方对应的抽帧子比例进行抽帧后剩余的视频帧添加至该其他会话方的下行发送窗口;
[0103] 定时向当前会话方传输下行发送窗口中的视频帧。
[0104] 进一步的,上述待传输视频的初始传输总码率可以通过平滑算法确定。
[0105] 进一步的,上述抽帧比例确定模块510,还可以用于:
[0106] 如果当前会话方的网络带宽大于等于待传输视频的初始传输码率,则设定待传输视频在每一视频帧类型下的抽帧比例为非抽帧值。
[0107] 本实施例提供的视频传输装置可适用于上述任意实施例提供的视频传输方法,具备相应的功能和有益效果。
[0108] 实施例五
[0109] 图6为本发明实施例五提供的一种资源服务器的结构示意图,如图6所示,该资源服务器包括处理器60、存储装置61和通信装置62;资源服务器中处理器60的数量可以是一个或多个,图6中以一个处理器60为例;资源服务器中的处理器60、存储装置61和通信装置62可以通过总线或其他方式连接,图6中以通过总线连接为例。
[0110] 存储装置61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中提供的视频传输方法对应的程序指令/模块。处理器60通过运行存储在存储装置61中的软件程序、指令以及模块,从而执行资源服务器的各种功能应用以及
数据处理,即实现上述视频传输方法。
[0111] 存储装置61可主要包括存储程序区和存储数据区,其中,存储程序区可存储
操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置61可以包括高速随机存取
存储器,还可以包括
非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0112] 通信装置62可用于实现各个会话端与资源服务器的网络连接或者移动数据连接。
[0113] 本实施例提供的一种资源服务器可用于执行上述任意实施例提供的视频传输方法,具备相应的功能和有益效果。
[0114] 实施例六
[0115] 本发明实施例六还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述任意实施例中的视频传输方法。该方法具体可以包括:
[0116] 如果当前会话方的网络带宽小于待传输视频的初始传输总码率,则根据待传输视频中不同视频帧类型的抽帧顺序,确定在待传输视频的对应视频帧类型下抽帧后的剩余传输总码率与网络带宽最匹配时不同视频帧类型下的抽帧比例;
[0117] 按照不同视频帧类型下的抽帧比例向当前会话方传输待传输视频。
[0118] 当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的视频传输方法中的相关操作。
[0119] 通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过
硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对
现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的
软盘、
只读存储器(Read-Only Memory,ROM)、
随机存取存储器(Random Access Memory,RAM)、闪存(FLASH)、
硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0120] 值得注意的是,上述视频传输装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可。
[0121] 以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。