编者按
近年来,腾讯云音视频在音视频技术领域不断突破创新,从采集、编码、传输加速、云端媒体处理、分发到解码,不断探索前沿技术,并将其广泛应用于多元化的场景中。与此同时,在海外市场的实践中,腾讯云音视频积累了丰富的经验和对市场的深刻洞察。
LiveVideoStack2023深圳站邀请到腾讯云音视频的总经理李志成分享腾讯云音视频的创新技术、多元场景及出海洞察。
文/李志成
整理/LiveVideoStack
01
创新技术
现在互联网超过85%的流量都是音视频流量,传媒、8K、XR、游戏、Apple Vision对超高清视界的需求越来越强烈。腾讯视频云的终端采集编码、多网融合及全球传输加速、云端前处理的音视频画质增强修复、8K@120FPS 音视频实时编解码、边缘端的实时分发以及终端和云端协同实时云渲染的解决方案。
目前终端编码存在的最大的问题有两个:一是画质和码率控制做得不够理想;二是驱动或者系统集成原因,导致硬件编码稳定性也不够好,成功率在95%左右,还有5%左右比例需要软编解兜底容错。
例如图上左下角,客户反馈APP里用了很多推理和渲染,GPU负载高、功耗高,但CPU比较空闲。客户对视频画质的要求比较高,导致在终端采集用硬编时码率高,再到云端进行增强和压缩。经过这个流程,终端用户看到的画质会比较好,但云端音视频转码和增强的成本非常高,所以客户最终需求其实是能否把终端CPU的算力用起来,把视频编码、画质压缩做好。
这两年腾讯云在终端编码方面做了单核H.264、H.265实时编码支持,在工程优化以及算法设计上做了不少优化创新:
- 紧凑的数据结构设计、减少冗余内存消耗,重新设计数据结构,以及更高效的SIMD加速,总体的设计原则还是以空间换时间;
- 创新算法设计上,在块划分、模式选择、参考帧、滤波相关算法以及屏幕内容块算法上做了总共60多种算法创新;
- 弱网下支持灵活的上层APP调用,可以动态设置码率、帧率、分辨率以及SVC分层一些特性支持。
经过综合的数据结构、算法创新优化以后,在骁龙865、MT6769的长时间压测下,在零延迟、单核CPU下,H.265的CPU编码压缩性能相对硬编H.264基本上能提升35%,相对硬编H.265提升20%。总体来说,基本上硬件的硬编基准,在高通625、单核CPU上,可以做到720P@25FPS的稳定压缩出帧。
腾讯云音视频的终端编码SDK支持PC,安卓、iOS、IoT摄像头等,能做到单核CPU的实时编码。
腾讯云音视频近年一直在做多媒体场景下传输加速方面的优化。在P2P方面,腾讯云音视频在NAT全网的平均打洞成功率能够达到70%以上,支持IoT的RTOS,在摄像头、监控等行业应用也比较多。
首先,腾讯云在终端传输加速方面支持多运营商蜂窝网络/Wi-Fi/卫星网络上网多网融合实现移动网络加速增强。运营商有时会接到很多用户投诉说直播推流很卡,不知道怎么解决。腾讯云通过和运营商进行合作,在弱网、多网融合等方面做了传输优化,降低了用户投诉率。
其次,Stream Services媒体传输加速方案具备全球边缘加速能力,例如在游戏赛事直播方面,通过腾讯云全球Stream Link加速方案做到几百毫秒的延迟分发到全球各视频平台,在国内一些电视媒体上,在海外新闻采编方面也有采用腾讯云Stream Link方案,支持全球流媒体跨区传输。
最后,针对多媒体的ETC传输加速协议栈方案支持按RTT变化的拥塞控制,针对音视频场景以接收速率为指导,主要是引入ACK机制,参考QUIC的双序号模式,定时反馈ACK到发送端,可以实现快速的数据重传;这里的RTT用的是每一个回合的首包来计算RTT会更准确一些,拥塞控制使用了凸函数,低延时,稳定增长和降速;针对音视频场景的TQUIC传输加速的项目也在Github上开源,希望更多的开发者能够使用到。
点播文件上传方面,腾讯云支持全球多源站存储、代理/动态加速、分片传输、断点续传、TQUIC加速,多网聚合,支持SDK、云API、控制台等多种上传接入模式,弱网环境上传成功率超过99.5%。
云端媒体处理方面,实时画质增强修复,腾讯云音视频在双向训练数据集,以及局部、全局模型工程、帧间约束损失函数,多帧融合以及在插帧非线性运动二次函数拟合运动轨迹上都做了挺多创新,支持分布式算力池增强模型实时处理以及RTC/LIVE场景实时处理。
上图是去噪声、去伪影、去压缩块效应、人脸字体增强以及去划痕、超分等效果展示,在传媒、互联网以及教育、金融上都有比较成熟的解决方案和广泛的应用。
在插帧方面,图上的案例是一个海外客户,有很多体育赛事视频,视频源是1080P@25FPS的,目标是超分插帧到4K@50FPS,给用户提供一个高清付费频道。腾讯云音视频给客户提供了实时超分插帧的解决方案。通过插帧方案很好解决了插帧稳定性、闪烁、卡顿问题。特别是针对非匀速直线、复杂运动场景产生的形变导致的光流估计不准的问题都提供了比较成熟的解决方案,目前在一些体育和游戏赛事,包括直播实时场景中已经有了较多应用。
在视频编码方面,腾讯云音视频支持主流视频格式压缩,包括H.264、H.265、H.266、AV1、VP9和AVSx等。对于H.264、H.265、H.266、AV1编码内核,腾讯云每年都在持续优化,每年都有大约5%+压缩收益的进步。并且连续三年MSU关键赛道指标综合最佳,同时,在去年北美的SLC云厂商编码评测评中,腾讯云MPS也是全项最佳(Excellent),支持8K@120FPS实时编码。
和最新版HM/AOM最慢档压缩数据相比,腾讯云音视频比HM/AOM bd-rate有20%+的收益,工程性能有HM 20倍+的提速。
目前在极高关注度的行业场景里面,全真互联、元宇宙、Apple Vision、XR/VR等穿戴设备,腾讯云音视频也全面支持MV-HEVC编码方案。常用的3D视频成像技术包括全息投影、裸眼3D屏幕和立体电影显示技术等目前常用3D视频内容,主要是VR头显和立体影视,大都基于左右视点图像的编码、传输和显示来完成。但长期以来,大量3D视频内容并没有使用专用的视频编码标准,而是使用通用的视频编码标准进行编码。主要的做法是将3D视频以SBS(Side by Side)的形式,把左右两个视点合并到一帧画面中,再将合并后的序列进行编码,比如常见的全景投影方式有ERP、CMP、SSP等。
以H.265为例,HEVC编码器并没有帧内远距离搜索,因此同一帧的左右半间无法相互预测;另一方面,由于运动估计搜索范围的限制,帧间预测也不能利用不同视点间的信息,而全景投影方式下,在播放解码拼接时,由于合并的帧压缩时左右视点视频图像分开合并的原因,拼接恢复时容易出现黑线,这是客户反馈最多的问题。
总体来看,3D MV-HEVC充分利用了左右视点图像间的冗余信息,进一步提高图像的压缩效率,压缩收益达到20%以上。腾讯云3D MV-HEVC编码压缩支持计划于24年Q1在官网上线,大家可以通过腾讯云媒体处理(MPS)产品进行体验。
在CDN分发方面,腾讯云最近两年在低延时WebRTC传输优化做了挺多创新和实践,支持WebRTC传输加速协议栈以及全终端SDK支持,支持H.265/H.266/AV1,支持AAC、支持0-RTT信令、自适应ABR/NACK以及灵活FEC(RLNC)以及多通道传输优化,支持FFmpeg插件、IJK、小程序、EXO、OBS插件等标准,在物理多路径、协议多通道上也支持灵活标准协议扩展。
如图是WebRTC的效果,左边使用的是标准浏览器H5 WebRTC的效果,右边是快直播SDK的效果。在50%丢包的情况下,浏览器WebRTC看上去比较流畅,延迟基本控制在500ms以内,快直播SDK则比浏览器更流畅。
很多人会认为,快直播SDK传输扩展协议都是私有扩展定义,传输协议加速比较容易实现。但其实目前LEB SDK的扩展、传输优化等对客户都是开源的,腾讯云音视频通过开源的形式,与大家的共建,把WebRTC传输加速优化越做越完善。
目前97%的浏览器已经支持WebRTC协议的传输和播放。在低延时传输方面,用户反馈的最大的问题就是定价和成本太高。腾讯云音视频在低延时WebRTC场景下支持500ms以内的P2P,分享率大约为30%,目前已经有不少平台使用,在1000ms以内延时的情况下,分享率能50%+。
在实时云渲染方面,腾讯云音视频希望终端更轻量,做到音视频端云协同,以及更复杂的推理和渲染算力能够在云端完成。腾讯云实时应用云渲染产品,所有渲染工作都在云端实时完成,渲染完毕的画面及声音以音视频流的方式通过网络实时传输给用户; 全网平均延时<60ms,终端Decode、渲染和推理算力不再是瓶颈; 云端实时渲染X86/ARM/板卡全面支持。
云渲染支持全球混合云资源调度,算力和存储、网络分离、桌面(X86)、移动端(AOSP、板卡、ARM)全面支持,并支持XR以及全景(Apple Vision)视频渲染。
02
多元场景
腾讯云音视频的直播、媒体处理、云渲染等产品支持公有云、专用云、混合云、SDK LIB库灵活交付和集成模式,提供灵活的合作和交付模式。
另外,在直播和RTC的场景下,腾讯云目前能做到8K@120 FPS的实时编码及处理。在8K@120FPS实时编码低延迟场景下,腾讯云相比于x265 medium大约有15%以上的压缩收益。
腾讯云媒体处理支持MV-HEVC编码、帧/参数集解析、MP4封装/解封装、HLS|DASH分发,支持iPhone15Pro录制空间视频以及Vision Pro上播放。
在云端分享方面,时下火热的弹幕游戏,其前期解决方案是主播端本机安装弹幕游戏,一方面当游戏房间参与人数多以后直播编码画面基本糊得不行;另一方面本机弹幕游戏只能在PC端开播,手机端开弹幕游戏,加上渲染和编码画面,互动效果比较差,操作也不便利。
针对这些问题,我们推出实时云渲染的弹幕游戏方案,弹幕游戏运行在云端,主播可以一键开播,不需要在本地安装弹幕游戏。腾讯云在云端实时做推理、渲染、编码、主播摄像头画面上行到云端混流以及云端WebRTC低延迟直播推流分发,同时这也解决了在本地端渲染、编码以及硬件配置升级的问题。
实时云渲染的另一个常见运用场景就是3D特效。海外某TOP直播平台希望产品在进行直播的时候能够用Unity/UE制作出3D礼物特效,画面酷炫从而提高直播间用户打赏率,但如果将这种较为复杂的3D特效礼物全部放在终端去渲染就会导致安装包很大。
腾讯云实时云渲染将较为复杂的Unity做的3D礼物特效在云端做实时渲染,渲染完成后画面再与直播流做实时混流,这样就使得客户端不需要再下载特定的Unity安装包插件,用户APP也不需要下载3D视频特效资源包,很好地解决了客户3D视频礼物特效的问题,打赏率的提升也非常明显。
在互动游戏方面,包括现在比较火的AIGC视频特效,都可以通过实时的云渲染和直播进行混流再下发。
对于目前海外比较火的Fast Channel模式,Stream Services支持标准SSAI@SCTE 广告插入,支持APP用户个性广告插入和配置,千人千面。
很多视频平台每个月会收到大量客服音视频质量咨询工单,如无声、直播流卡顿,黑花屏,抖动、模糊、过爆、马赛克、爆音、音频不同步、清晰度差、录制视频无法播放等各种问题,需要消耗大量的人力处理这些工单。
针对音视频的容器格式的诊断,包括框架、容器格式、质量等方面腾讯云音视频有完整的质量检测工具集,帮助平台进行实时音视频质量评测。
腾讯视频云质检产品提供全链路质量检控、支持离线文件、直播流媒体格式诊断及兼容性分析及修复,支持点播、直播实时流评测(PSNR、VMAF、SSIM、无参考主观分等)及报告PDF输出。
导播台方面腾讯云音视频也积累了多年的经验,并且一直在更新完善,支持灵活编排、布局、节目单、多语音字幕,支持自定义画面布局、备播机制、音视频同步切换等功能,省去了沉重的传统导播台的硬件设备,丰富线上业务和Web企业直播工具。
腾讯云音视频同时也支持音频的处理解决方案,包含3A、爆音检测、响度控制、背景及伴奏声分离等。腾讯云媒体处理MPS产品现在已经支持实时、稳定、高效的音频处理解决方案(高清、纯净、流畅、智能)。
03
出海洞察
从全球音视频 APP市场来看,应用市场增速稳定,新兴市场保持高增速,娱乐、社交占比超80%;2023年第一季度,全球非游戏类APP收入同比增幅为近五季度最高,其中效率、娱乐、社交等热门品类均保持上涨,带动了整体市场的稳步上升。
中国出海企业中,泛娱乐贡献了88.6%的收入份额,其中娱乐类APP占比超过70%,社交媒体类APP占比也超过10%,全球下载TOP10市场基本不变,东南亚、日韩占据了3成多下载份额,印度、印尼以及日韩、俄罗斯、巴西增份额占比和增速强劲。
海外用户和国内用户在使用云服务理念上存在差异。
国内云厂商花费了大量时间去服务大客户做了很多定制化需求,非标准化,也没有标准API和文档。
而海外云厂商都是标准的控制台、标准的API,标准文档,很少进行定制开发服务。海外用户希望控制台以及API和文档都是标准可见可操作的,可以自助使用云厂商提供的API和在控制台自助配置。
跟海外客户产品技术信任感的建立需要很长的时间,需要耐心。例如北美SLC评测机构,做过一个包括AWS、Bitmovin、腾讯视频云、Azure、Brightcove等各云厂商媒体处理编码压缩等方面的盲测,结果显示腾讯云无论是从压缩收益比、单位成本、还是产品工程响应速度都是最佳的。
但是评测机构看到结果后不相信,认为中国的云厂商不可能做出这么稳定、高性价比的产品,并要求提供评测发出请求的时间点和事件在云端处理的主要LOG日志,我们在给他们发送了日志以后,机构才相信并且意识到中国的云厂商在这方面做得很好并认可了我们。
国内的云厂商在直播、点播、媒体处理、编解码、增强、云渲染、终端SDK等各方面都会自研。在海外则不同,海外的云厂商专注做优势的垂直领域。在海外提供音视频服务的时候,要和海外这些垂直领域优秀的厂商一起做好解决方案,比如现在腾讯云音视频与做音频的杜比,做数字水印比较好的Nielsen、Kantar,做传输比较好的NewTek、NDI,做无损压缩比较好的JPEG.XS,做数据统计较好的FUJITSU等厂商都在沟通合作。
较为荣幸的一点是,在最新的GARTNER推荐全球媒体处理云厂商报告中,腾讯云媒体处理产品是亚太地区唯一个入选的国内云厂商,奠定了行业领先的基础。
以上就是关于技术、多元场景下产品的应用以及出海洞察的一些简单感悟和分享。腾讯视频云团队目标是为全球音视频的发展,全真互联、超清视界提供坚实的数字化助手。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。