基于视频通话场景的自适应视频编码方法及装置的制造方法_3

文档序号:9870840阅读:来源:国知局
[0165] 顿率分类层次;15,9, 5, 3,1
[0166] 所有分类层次均只开启1/2像素的运动估计及16x16到8x8的编码块结构,1/4像 素及8x4,4x8与4x4编码块结构不开启。
[0167] 对于每一个运行谷歌安卓系统的不同型号终端,根据获取的CPU主频及核数映射 到相应的IOS系统的对应型号,映射关系如下:
[016引 安卓CPU〉= 4核且主频〉1. 2G 《-》IP册肥_5S
[0169] 安卓CPU〉= 4核且主频< =1. 2G 《-》IP册肥_5
[0170] 安卓CPU〉= 2核,<4核且主频〉1. 2G《-》IP册肥_4S
[0171] 安卓 CPIK2 核或主频 < =1. 2G 《-))IPH0NE_4
[0172] 步骤202,在启动视频通话时检测网络带宽与对端画面的宽高比,根据所获得的信 息设置适应于编码器的初始编码分辨率与顿率,其中,所获得的信息包括网络带宽和CPU 能力,并且所述CPU能力取各通讯端中能力最小者的值Vmin。
[0173] 进一步地,所述根据所获得的信息设置适应于编码器的初始编码分辨率与顿率 (步骤202),可W包括;按表二方式设置网络带宽及智能终端的CPU能力与推荐分辨率与顿 率之间的对应关系。
[0174] 表二
[0176] 例如,网络带宽及终端CPU能力与推荐分辨率与顿率之间的对应关系为:
[0177] 带宽〉=128化ps, CPU_Capacity> = IPH0NE_4S,编码分辨率为 320x240,顿率为 15,编码层级为8 ;
[0178] 带宽〉=128kbps, CPU_Capacit}<IP册肥_4S,编码分辨率为 240x160,顿率为 15, 编码层级为7 ;
[0179] 128化ps>带宽〉=64化PS,对所有终端,编码分辨率为240x160,顿率为15,编码 层级为7 ;
[0180] 64化PS〉带宽〉=32化PS,对所有终端,编码分辨率为160x120,顿率为5,编码层 级为4 ;
[0181] 带宽<32化PS,对所有终端,编码分辨率为80x60,顿率为3,编码层级为1。
[0182] 进一步地,所述根据得到的推荐分辨率W及对端屏幕的宽高比,裁剪出和对端宽 高比接近的分辨率进行编码(步骤203),可W包括:
[0183] 设各项参数如表H所示:
[0184] 表 H
[0185]
[0186] 确定宽高比的方法如下:
[0187] 女口果,recomm_width〉recomm_hei邑ht*tar邑et_aspect
[0188] 贝[|,new_width = recomm_hei邑ht*tar邑et_aspect
[0189] new_hei邑ht = recomm_hei邑ht
[0190] 否则,new_wi化h = recomm_width
[0191] new_hei邑ht = recomm-width/target-aspect
[0192] 如果上述计算得到的宽高不是16的整数倍,则裁剪为16的倍数。
[0193] 进一步地,所述根据更新后的编码分辨率与顿率进行随后的视频编码(步骤 102),还可W包括;步骤204,当检测到网络带宽发生改变并超过阔值范围时,对编码的分 辨率W及相关的编码层级进行更新,W适应新的网络状况。
[0194] 作为一种实施方式,所述步骤204包括:
[0195] 按表四对编码层级进行分类
[0196] 表四
[0197]

[019引设各项参数如表五所示:
[0199] 表五
[0201] 确定带宽的变化层级的方法如下:
[0202] bitrate_change_level = log(curr_bitrate/prev_bitrate)/log(2.0)
[0203] 如果,bitrate_change_level〉0
[0204] 则,bitrate_change_level 二 bitrate_change_level*0. 8
[020引 否则,bitrate_change_level = bitrate_change_level巧.0
[0206] 确定新的编码层级的方法如下:
[0207] curr_encoding_level = prev_encoding_level+bitrate_change_level
[020引在得到新的编码层级后,根据新得到的编码层级所对应的分辨率和顿率来进行编 码。
[0209] 进一步地,所述根据检测出的之前一段时间的视频的平均误差,来自适应的调节 此时的编码分辨率与顿率(步骤103),可W包括;步骤205,在网络状况没有变化,或者变化 较小时,视频编码的层级仍根据视频画面的情况不断自适应调节:
[0210] 计算视频编码在当前带宽所编码的分辨率与顿率时前3砂的量化值QP的平均值, 并进行如下判断:
[0211] 当平均值小于 24 时,编码层级州;r;r_encoding_level = prev_encoding_ level+1 ;
[021 引 当平均值大于 32 时,编码层级 cu;r;r_encoding_level = prev_encoding_level - I ;
[021引其中,当计算得到的编码层级cu;r;r_encoding_level大于10时,设置CiirL encoding-level 为 10 ;
[0214] 当计算得到的编码层级cu;r;r_encoding_level小于0时,最小设置CiirL encoding-level 为 0。
[0215] 优选地,网络状况变化较小一般是指网络带宽相对于当前值的变化在10% W下。 例如,用户可W自定义网络状况变化的区间范围。又例如,系统可W根据网络状况按照自定 义方式设置网络状况变化的区间范围。
[0216] 本发明公开的基于视频通话场景的自适应视频编码方法能够在不断变化的网络 环境及视频画面内容情况下进行视频编码并实现较好的视频清晰度与流畅度。
[0217] 为了解决上述技术问题,本发明还公开了一种基于视频通话场景的自适应视频编 码装置,包括:
[021引检测模块、控制模块和编码模块,其中:
[0219] 所述检测模块,用于对网络情况及画面情况进行检测;
[0220] 所述控制模块,用于根据检测模块检测到的网络情况及画面情况对编码分辨率与 顿率进行计算;
[0221] 所述编码模块,根据控制模块计算出的编码分辨率与顿率对视频进行编码;
[0222] 其中:
[0223] 对于在特定网络环境下开启的视频通话,所述检测模块检测初始的带宽,所述控 制模块根据检测到的网络带宽设置一个初始的经验编码分辨率与顿率,
[0224] 当所述检测模块检测到网络情况发生改变时,所述控制模块根据所述检测模块新 检测得到的带宽及之前带宽所采用的视频编码分辨率与顿率,计算出一个新的编码分辨率 和顿率,所述编码模块根据新的编码分辨率和顿率来进行接下来的编码,
[0225] 所述检测模块检测出的之前一段时间的视频的平均误差,所述控制模块根据该平 均误差来自适应的调节此时的编码分辨率与顿率,误差大于阔值则调降编码分辨率与顿 率,误差小于阔值则调升编码率与顿率。
[0226] 进一步地,所述控制模块进一步根据移动设备的CPU能力及所使用的编码器来设 定视频通话编码的分类等级层次;在启动视频通话时,所述检测模块检测网络带宽与对端 画面的宽高比,所述控制模块根据所获得的信息设置适应于编码器的初始编码分辨率与顿 率,其中:所获得的信息包括网络带宽和CPU能力,并且所述CPU能力取各通讯端中能力最 小者的值Vmin ;所述控制模块根据得到的推荐分辨率W及对端的终端屏幕的宽高比,裁剪 出和对端宽高比接近的分辨率,编码模块根据该分辨率进行编码;当所述检测模块检测到 网络带宽发生改变并超过阔值范围时,所述控制模块对编码的分辨率W及相关的编码层级 进行更新,W适应新的网络状况,在网络状况没有变化,或者变化较小时,所述控制模块根 据视频画面的情况对视频编码的层级不断自适应调节。
[0227] 进一步地,所述控制模块包括:如表一所示的配置参数,并根据表一的配置参数进 行如下操作:
[022引将运行苹果IOS操作系统的智能终端的CPU能力及所使用的经过优化的H. 264编 码器的分类层次按表一方式进行设置,
[0229] 将运行谷歌An化Oid操作系统的智能终端的CPU能力按表一方式映射到对应型号 的运行苹果IOS操作系统的智能终端的CPU能力,
[0230] 表一


[0234] 。作为一种实施方式,控制模块根据移动设备的CPU能力及所使用的编码器来设 定视频通话编码的分类等级层次;
[0235] 例如,对于苹果IOS系统的不同型号终端的CPU能力及所使用的经过优化的H. 264 编码器,分类层次如下:
[0236] CPU_Capacity> = IPH0NE_5S
[0237] 分辨率分类层次;640x480,480x320, 320x240, 240x160,160x120,120x80,80x60 [023引顿率分类层次;15,9, 5, 3,1
[0239] 所有分类层次均开启1/4分数像素的运动估计及16x16到4x4的所有编码块结 构。
[0240] CPU-Capacity == IPHONE-S
[0241] 分辨率分类层次;640x480,480x320, 320x240, 240x160,160x120,120x80,80x60
[0242] 顿率分类层次;15,9, 5, 3,1
[0243] 对于640x480分辨率,顿率为15时,只开启1/2像素的运动估计及16x16到8x8 的编码块结构,1/4像素及8x4,4x8与4x4编码块结构不开启;
[0244] 其它分类层次均开启1/4分数像素的运动估计及16x16到4x4的所有编码块结 构。
[0245] CPU-Capacity == IPH0NE_4S
[0246] 分辨率分类层次;480x320, 320x240, 240x160,160x120,120x80,80x60
[0247] 顿率分类层次;15,9, 5, 3,1
[024引对于480x320分辨率,顿率为15时,只开启1/2像素的运动估计及16x16到8x8 的编码块结构,1/4像素及8x4,4x8与4x4编码块结构不开启;
[0249] 其它分类层次均开启1/4分数像素的运动估计及16x16到4x4的所有编码块结 构。
[0 巧 0] CPU-Capac i = IPH0NE_4
[0巧 1]分辨率分类层次;240xl60,160x120,120x80,80x60
[0巧2] 顿率分类层次;15,9, 5, 3,1
[0巧引所有分类层次均只开启1/2像素的运动估计及16x16到8x8的编码块结构,1/4像 素及8x4,4x8与4x4编码块结构不开启。
[0巧4] 对于每一个运行谷歌安卓系统的不同型号终端,根据获取的CPU主频及核数映射 到相应的IOS系统的对应型号,映射关系如下:
[0巧引 安卓CPU〉= 4核且主频〉1. 2G 《-》IP册肥_5S
[0巧6] 安卓CPU〉= 4核且主频< =1. 2G 《-》IP册肥_5
[0巧7] 安卓CPU〉= 2核,<4核且主频〉1. 2G《-》IP册肥_4S
[0巧引 安卓CPIK2核或主频< =1. 2G 《-》
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1