RealNetworks是流媒体类别的发明者,改变了音频和视频内容在各种设备和全世界消费的方式。在编解码市场的大环境下,RealNetworks推出了新一代的视频压缩算法RMHD,专为下一代的高清流媒体业务所设计。本文将从视频编解码优化以及与AI的实践结合两方面来为大家介绍RealNetworks在这部分所做的工作。

文 / 况超
整理/ LiveVideoStack
大家好,我是RealNetworks的况超,本次演讲的主题是视频编解码优化以及与AI的实践结合,虽然我不是AI技术的专家,但在做视频编解码的后期也会用到一些AI的技术,所以也会与大家一起分享这部分的内容。
本次演讲主要由背景与需求、RMHD简介、RMHD优化以及与AI结合和总结展望四部分组成。
1. 背景需求
首先大家需要了解,视频压缩是一种非常重要的技术,随着时代的演进,产品不断更新,新的应用不断出现,在此期间用户的需求和要求也必定会越来越高,这些因素都会促使视频压缩技术的迭代,以求适应市场需求。
做上层应用或产品的公司在产品定义或开发过程中,经常面临的一个问题是选择适合自己的编解码标准,视频服务商的共同目标是在现有的网络和编码工具基础上将视频质量提高到极致,让用户体验更好,用户群增长更快,但在视频质量提高的同时更需要考虑降低包括存储、编码时间、算力和带宽等因素在内的总成本。所以编解码器是需要在综合考虑码率节省、编码速度、码率波动和版权税等诸多因素之后才能做出选择。编解码工作的展开就是围绕在开发一个适合自己的视频压缩技术或使用既有编解码技术之间做选择,工作内容需要在其中找到一个最佳的平衡状态,也就是在画质、码率和性能之间做平衡。
2. RMHD简介
在编解码市场的大环境下,RealNetworks推出了自己的视频压缩算法RMHD,即RealMedia HD。RealMedia HD专为下一代的高清流媒体业务所设计,能够极大地维持视频质量和文件大小之间的平衡,即在现有的网络环境中,也可以帮助运营商和制造商普及高清内容的服务和相关产品。
2.1 RealNetworks
RealNetworks是流媒体类别的发明者,改变了音频和视频内容在各种设备和全世界消费的方式。目前以数字媒体专业知识和创新为基础创造了新一代产品,采用最新的人工智能和机器学习来增强和保护我们的日常生活。编解码技术是不断演进的,从早期的RV8到RV9,再到后来的RV10(RMVB)以及目前主推的RV11(RMHD),本次演讲的内容也主要围绕RMHD展开。
2.2 RealNetworks技术发展路线
RealNetworks在之前的25年里都在不断地创新,部分产品由于是在海外市场使用,因此不被大家熟知。在2017年推出了新一代的编解码技术RMHD,在4K实时流媒体编解码方面实现了前所未有的效果,尤其是在画质和码率控制。
2.3 RMHD
RMHD其实是一个高清低码、低复杂度的算法集合,设计之初主要是针对流媒体产品以及软硬件实现时比较友好的私有编解码解决方案,在达到更高压缩效率的同时能够在软硬件实现更快的编码速度,复杂度也相对较低。由于低复杂性、短PBBP帧间依赖性和高压缩效率,RMHD编解码器对低延迟HLS流非常友好。同时它对CDN也是友好的,只使用标准的 HTTP / 1.1 协议就可以轻松地与P2P 解决方案集成。
2.4 RMHD的性能特性
有关RMHD性能测试的结果可以从上图中了解,在采用1080P/4K测试序列,具有八个CPU的AWS C5计算实例上对RMHD进行测试。采用VMAF作为视频质量感知的衡量指标,编码设置都是在以最慢的速度运行,并且执行二次编码。收集测试结果后从利用编码速度、画质和带宽三个维度分别与主流的Codec进行比较。
在编码速度方面,RMHD的编码速度要比HEVC和VP9更快(都是在以最慢的速度运行,并且执行二次编码)。
编码1080P,在码率大于2M时VMAF的得分RealMedia HD仅低于AV1,但高于其他Codec
对于4K分辨率,在码率大于5M时VMAF的得分RealMedia HD要高于其他Codec
在画质相同的情况下,同为1080P分辨率时,RMHD的码率较AV1之外的其他Codec小;同为4K分辨率时,RMHD的码率表现也优于其他Codec。以上是RMHD技术的性能指标,在实际应用中也有着良好的使用体验,能够在对比中占优势的结果都来源于团队背后所做的大量工作。
3. RMHD优化以及与AI结合
视频压缩技术在实际应用中,主要围绕三个维度来展开工作,首先是视频压缩算法coding tools的设计,coding tool的设计和取舍要考虑到复杂度,既兼顾软件实现的便利又兼顾硬件设计的友好。其次是复杂度的问题,优化调优编解码工具,在使用过程中及时调整不同情况下复杂度对质量的影响。这部分主要是去除实现上的冗余,一套算法在真正实现的过程中存在很多冗余,传统编码框架首先需要做预编码来决策最优编码方案,快速算法的优化对编码的质量和速度影响很大。最后是视觉质量评估系统,从视觉冗余角度来去除冗余信息,将比特调优之后再分配,优化比特利用率。
3.1 RMHD框图
RMHD的基本框图是基于传统编码框架,通过pre-encoding决策最优。在上一代RMVB基础上,新增了很多coding tool,做了大量的改进和优化。为了能够同时达到高的压缩率和更高的编解码速度(软件解决方案),coding tool的设计和取舍考虑到复杂度和应用场景。在白色块部分主要是之前提到的第一维度视频压缩算法coding tools的设计。而RDCO在团队内部被称为率失真-复杂度优化模块(滤失真复杂度优化模块),在使用过程中及时调整不同情况下复杂度对质量的影响。RC主要负责将比特调优之后再分配,优化比特利用率。
3.2 编码器速度提升
当编码工具集确定之后,在实际应用中有一些方式可以提升编解码器的速度。首先对于代码的加速,这部分不会改变画质,它只是在算法层面进行加速,在不同的赛道(平台)上运行,都会有相应的SIMD的优化(arm,x86),比如intrinsic/assembly (arm-v7/v8/neon, sse2/4,avx2),速度会有显著的提高。
其次针对架构来说,RMHD采用良好的多线程设计,以CU line为运行单元,短PBBP帧间依赖性利于并发性, 同时拥有高效的内存管理和针对性的cache优化。再者基于硬件加速,主要是利用GPU算力加速,GPU本身比较适合用于大规模、分支条件较少的的视频数据运算,比如运动估计,插值滤波。但在用GPU进行加速时需要尽可能减少数据搬移量,使用“页锁定内存”提高传输带宽,小数据合并一次传输,否则使用GPU的加速作用很小。除此之外也可以基于IntelGPU使用QuickSync Video (Core i7)的部分功能达到加速编码的目的,利用device side VME反馈的有用信息来指导RV11的整个编码流程,达到提质增速的效果。
接下来是一个重要的部分,那就是快速算法,这部分是有损的,会影响画质,其核心就是在优化复杂度,针对coding tool本身的特性,开发出一整套快速算法集合,根据实际需要选择不同的级别(档位),换挡的前提是要控制质量损失,质量损失在可接受范围内即可。RMHD内部大概有10档快速算法的级别,用户可以根据需要自适应选择相应的档位。最后一块就Lossy解码, 主要是动态侦测当前速度,使得在播放速度达标的同时可以保持视频质量。当速度有不达标的风险时,可以用多种快速算法的组合实现不同级别的有损解码,通过牺牲小部分视频质量换取播放速度的大幅上升。
3.3 GPU编码性能对比
GPU编码速度对比上如上图所示,在4K序列上,GPU加速可以在一般家用的IntelCore i7上达到接近每秒50帧的超实时转码速度,没有GPU加速时速度仅为每秒23帧。对比二者在图像细节上的表现(以480p RaceHorse为例)来看,GPU加速后画质损失也相对较小。
3.4 Lossy解码性能
对于Lossy解码性能从质量速度转换图来看,牺牲小部分质量就能够换得速度大幅提升,这可以改善在性能较差的设备上的播放体验。RealNetworks针对市面上大多数的手机和多媒体盒子做了大量的测试(画质和流畅达标率)。通过设备性能达标率的对比图可以看到,这种策略使得在同一个设备上能够顺利播放的视频更多了,更不容易出现视频卡顿现象。通过上面画质对比图,也可以看到策略开启前后,视频的主观质量没有明显的差距,左边是在正常流畅解码状态下的视频画面,右边是在不流畅时开启lossy解码功能的视频画面。
3.5 利用常规手段或AI改善编解码性能
刚刚提到RMHD编码也是基于传统编码框架,其中很多环节都要付出时间的代价,如果想要进一步提高压缩质量,就需要对编码模式有更多的划分和预测,整个遍历的代价会更大,优化的工作量也会更大。除了传统的手段之外,还可以利用AI改善编解码功能,比如利用AI做码率控制模型、CAE编码以及增强编码。
3.5.1 码率控制模型
码率控制模型如上图所示
3.5.2 码率控制
码率控制具体包括比特分配策略、码率控制模型选择和量化参数调整三个部分,关于比特分配策略,首先需要确定码率控制的目标,如VBR、CBR、CQ等,针对不同的目标采取不同的比特分配策略,VBR可以采取较大的时间缓冲区、CBR应该采取较小的时间缓冲区,以适应相应的目标。码率控制模型目前常用的有R-Q模型和R-λ模型可供选择,这里列举了Live-streaming 和 VODRMHD两个RMHD主要的应用场景,对应不同码率控制策略。量化参数调整应该结合可用的参考信息,参数的选择和利用该参数对量化参数的调整通常是最为重要的一个部分。
3.6 通过训练优化之后的RC模型
通过机器学习训练优化之后,RC模型优化前后的差别由图中所示,对于标准测试序列“Fourpeople”来说,优化幅度是0.4比特左右。
3.7 Adaptive Quantization
码控模型可以理解为一种基准的比特分配功能,但其实这样还不足以改善画质,提升比特分配的精准度,Adaptive Quantization就是对比特分配进行微调的工具,输入图像在进入编码流程之前,将会进行LCU级别的图像预分析。图像在经过LSM (Local SensitivityMeasurement) 模块和dQPM (delta QP Mapping) 模块后,每个LCU将会被动态赋予一个delta QP值,并最终影响每个LCU的编码量化系数,从而得到更优的编码效率。采用的局部感知测量方法,将主要考虑对比度屏蔽效应对于人眼主观视觉的影响,为追求更好的主观编码效率提升,后续可能会引入更多人眼屏蔽效应因子做结合。
通过训练,得到模型的最佳参数。对不同的场景,方便对模型参数调整。
3.8 基于内容的CAE编码
基于内容的CAE编码包括人脸的检测/特殊处理和场景的检测/区别处理两个方面,人脸检测利用RN自身的CV技术,能够检测画面中关键的人脸部位并进行特殊的处理,包括QP调整和增强。场景检测可以通过不同场景的信息,利用不同的训练模型得到最佳的编码配置,不同的场景采用不同的编码配置,进一步提高编码比特利用效率。
3.8.1 基于场景的动态编码的模型训练
基于场景的动态编码模型训练过程分为四步,首先对每个视频场景进行多次fix-QP编码,每次编码采用不同的分辨率和QP的组合,根据VMAF值,画出convex hull。在convex hull上,根据目标码率,找到最佳VMAF对应的分辨率和QP组合,作为神经网络的dataset的y值。之后统计每个视频场景的feature信息,比如每一帧的satd的平均值,这些feature作为神经网络的dataset的x值。最后采用4层神经网络训练准确率为0.96,而目前测试的准确率为0.9。
3.9 Playback Navigation
PlaybackNavigation 是CV与codec应用结合的播放导航功能,在编码端产生对应的CV meta data,在播放端基于对应的meta data开展应用,可以灵活选择感兴趣的片段、自动插播广告、删除某些人像等功能,SAFR技术是非codec依赖的。
上图是Playback Navigation Sever端和Client端的流程图,在Sever端数据进来之后会进行CV分析,一个产生编码数据,另一个产生CV信息,在未来RealNetworks会做更多关于AI相关的实践。
4. 总结与展望
在未来,RealNetworks会基于RMHD框架,利用AI的相关技术实施增强编码引擎(Enhancement Coding Plugin),对前处理,后处理,视频压缩等方面进行改善,助力RMHD的生态更加完善。
SAFR系统不断优化会便利和保障人们的日常生活。作为实时视频人脸识别平台,需要提供高准确度同时识别运动中人脸,以及化妆和部分遮挡,自然环境和微光下人脸,做到这一点最小只需要60x60像素即可识别面部。测试准确率99.86%, 可在100ms内快速识别实时视频中移动的人脸,比其它算法快3-5倍,在准确性和性能方面达到了最佳的效果,是一套轻量级的人脸识别系统,后续会基于CV技术继续对SAFR系统进行持续优化改进。

LiveVideoStack 秋季招聘

LiveVideoStack正在招募编辑/记者/运营,与全球顶尖多媒体技术专家和LiveVideoStack年轻的伙伴一起,推动多媒体技术生态发展。同时,也欢迎你利用业余时间、远程参与内容生产。了解岗位信息请在BOSS直聘上搜索“LiveVideoStack”,或通过微信“Tony_Bao_”与主编包研交流。

视频编解码优化以及与AI的实践结合相关推荐

  1. 视频编解码优化的几个概念

    视频编解码优化可以考虑neon,但是gpu不行. neon 在移动平台上进行一些复杂算法的开发,一般需要用到指令集来进行加速.目前在移动上使用最多的是ARM芯片. ARM是微处理器行业的一家知名企业, ...

  2. 中科大的AI图像/视频编解码综述

    [前言] 长论文ptsd犯病了,这次是一篇35页的AI编解码器的综述,犯病了犯病了. 首先还是保命时刻,以下解读与见解均为我的个人理解,要是我有哪里曲解了,造成了不必要的麻烦,可以联系我删除文章,也可 ...

  3. 【视频编解码性能优化与实现】

    点击上方"LiveVideoStack"关注我们 " "音视频+无限可能" 是一扇LiveVideoStackCon面向新兴领域开启的大门,在移动互联 ...

  4. H.264视频编解码的代码移植和优化

    基于DSP系统开发的视频编解码系统,国内几乎都是走的移植,优化的路线,并且移植的代码,都是开源的.毕竟花费大量的人力,物力去开发一套自己的代码,并不见得比一些成熟的开源代码效率更高,健壮性更好.更何况 ...

  5. 解析H.264视频编解码DSP实现与优化

    引言 基于互联网的数字视频产业前景看好,而3G的规模部署,也会推动移动视频通信成为现实.但数字化后的视频图像具有数据海量性,给图像的存储和传输造成较大的困难.数字视频产业,是指数字内容中以数字视频形态 ...

  6. 【视频编解码的新挑战与新机会】

    在过去的一年中,我们可以看到多媒体特别是音视频技术的能力在严峻的挑战下,为各行各业带来了巨大的变化.疫情过后,又会有哪些多媒体新技术.新实践呈现在大众的视野当中?为行业的发展与应用带来哪些新的趋势与机 ...

  7. 深入浅出理解视频编解码技术

    导读:随着移动互联网技术的蓬勃发展,视频已无处不在.视频直播.视频点播.短视频.视频聊天,已经完全融入了每个人的生活.Cisco 发布的最新报告中写道,到 2022 年,在移动互联网流量中,视频数据占 ...

  8. RTC业务中的视频编解码引擎构建

    正文字数:6146  阅读时长:9 分钟 视频编解码技术一直是视频内容应用中的核心业务,基于各个平台和各个渠道的视频内容采集与分发都涉及到视频编解码技术的介入.在RTC业务场景下,如何构建高效快速的视 ...

  9. 全面解析视频编解码:原理、策略、实现

    远程桌面,本质就是将桌面进行连续截屏.编码压缩,经网络传输后,再解码还原成画面的过程.可见编解码技术在其中扮演了举足轻重的作用. 继上一篇介绍了远程桌面的五大核心指标后,本篇我们将揭秘高质量远程桌面的 ...

最新文章

  1. struts2学习笔记--使用servletAPI实现ajax的一个小Demo
  2. 所有雷电接口电脑5分钟内即可破解,漏洞无法软件修复,微软Surface笑了
  3. 小程序 按需_小程序后台操作,新手需知道的几个要点
  4. 如何选择漏电保护器规格型号_家用漏电开关型号介绍 如何选用家用漏电开关...
  5. OpenvSwitch VxLAN实验
  6. JavaScript常用单词整理总结
  7. cdockpane限制调整大小_影视后期制作小伙伴必看:使用AU对声音质量进行调整的三大技巧...
  8. C语言常用字符串函数
  9. java jqgrid json格式_jqGrid 数据之 Json
  10. hadoop yarn 获取日志_「大数据」「Hadoop」-安装及数据目录
  11. 初始runtime(运行时机制)
  12. 【存档】使用OllyDbg+ResHack+LordPE来修改EXE文件
  13. js代码美化、格式化、css代码美化、格式化、html代码美化、格式化
  14. CentOS7 五步安装搜狗拼音输入法
  15. java连接mysql lookup_Java数据库连接池lookup用法
  16. 【Leetcode】780. Reaching Points
  17. java 从已知日期计算干支纪日_天干地支纪日纪时计算公式
  18. 35. 我用Compose开发了一款音视频处理app
  19. excel给定一个日期,确定是本月的第几周
  20. sklearn自带数据集load_digits(手写数字识别)的线性与对数模型实现,并比较二者性能

热门文章

  1. 【Redis】使用Redis Sentinel实现Redis HA
  2. arcgis api for js共享干货系列之一自写算法实现地图量算工具
  3. SameNameFile 比较两个文件夹是否同名
  4. CodeForces - 1543D1 RPD and Rap Sheet (Easy Version)(异或+交互)
  5. 洛谷 - P3356 火星探险问题(最大费用最大流+拆点+路径打印)
  6. HDU - 1528 Card Game Cheater(二分图最大匹配)
  7. 自动按键脚本_阔怕...按键精灵还能将别人的脚本导入为自己所用
  8. android智能农业,Android应用源码之智能农业
  9. QT乱码总结2.gbk和ANSI和gb2312的区别
  10. C++虚继承(六) --- 虚继承浅析