前端未来的主流技术方向有哪些?腾讯、京东、同城旅行等大厂都是怎么布局的?戳此了解 了解详情
写点什么

我们都是追梦人——爱奇艺 8K VR 直播技术方案

爱奇艺终端网络团队

2019 年 8 月 23 日

我们都是追梦人——爱奇艺8K VR直播技术方案

闲梦江南梅熟日,夜船吹笛雨萧萧,人语驿边桥。梦里不知身是客,人们在互道晚安时,不忘加一句好梦。VR 虚拟现实技术,意图是带给用户梦境般身临其境的感觉。怀着忐忑激动的心情,兴致冲冲的购买了一套 VR 设备,却在用过几次后扔到角落吃灰,相信不少童鞋有过类似经历。看不清楚,像隔了一层纱?画面模糊,一点也不清晰?视频画面品质不够真实,成为虚拟现实走向造梦空间的最大阻碍。


在爱奇艺有一群追逐梦想的”工匠”,致力于为用户提供身临其境的观影体验,不断创新,反复打磨,利用技术不断加持,在 8K VR 直播方案上做了很多优化,实现了码率降低 75%,端到端挥手延迟降低到 3 秒,移动画面延迟降低到 0 秒,领跑行业的解决方案。


随着 5G 技术的发展,VR 直播将是一个重点的应用项目,5G 价值在于高带宽和低延迟,采用创新“采编播”技术架构,利用 4K/8K 全景拍摄技术构建直播现场影像。通过 5G-CPE 环境实现数据快速传输同步,利用爱奇艺云提供计算能力完成视频编辑转码,最终通过爱奇艺 VR 一体机实现 4K/8K 全景直播。将为用户提供更加沉浸,码率更高的观影体验。


VR 视频多数都是球形模型,观看的时候视野只能看到球形上的局部区域,视野能覆盖的区域取决于 FOV 大小与视野的纵横比,以常见水平方向 90 度视野纵横比 1:1 为例: 当头部不转动,目视正前方,视野中的区域只有整个 VR 视频的 1/8,水平方向 1/4,竖直方向 1/2;最坏的情况下,转动头部方向正对极点,视野中的区域为整个视频区域的 1/4。


8K、12K、16K 分辨率的必要性

VR 设备为了呈现最优显示效果,视野区域能覆盖的像素越高越好,以常见 4K 分辨率视频源为例,视野中只有 1K 左右分辨率的区域,这个 1K 左右的图片呈现出来只能达到普通视频的 720P 效果;为了达到普通视频 1080P 效果,VR 视频源至少需要 8K 分辨率; 考虑到目前 2K、3K 屏成为 VR 设备的标配,对超大分辨率的 VR 视频源需求越来越强烈。


整体流程

爱奇艺 8K 直播整体流程可分为现场采集推流、云端编码、CDN 传输、终端播放 4 个环节。


现场采集推流指技术团队通过 8K 摄像机采集会场 360 度全景信号,编码为码率 80Mbps 的 8K H.265 直播信号,回传到直播云编码服务器。


云端编码对 8K 全景直播信号进行前处理和编码,生产适合传输和终端播放的编码格式。


然后直播云 CDN 传输将已经编码的直播流进行分发到用户最近的边缘服务器。


最后在终端进行 VR 全景直播流的下载解码渲染播放。



8K 分辨率高达 7680x3840,是 1080P 的 16 倍,码率是 60Mbps 到 120Mbps 左右,这对直播从采集到播放的直播链路各环节,都是一次挑战。


技术挑战

首先是码率高,直播流需要从网络下载,码率越高直播视频加载的时间就越长,用户等待的时间就越长,卡顿也会越多。


第二是有效传输利用率低,全景信号拼接使用等距投影,相当于把球体地球仪球面上的点,展开为一幅矩形世界地图。在 VR 设备中,用户看到的图像仅仅是全景视频画面的一个小部分,即使用户没有转动视角,那些视角外的大量图像像素也会被编码传输到终端播放设备,这是极大的浪费。另外,现在主流芯片解码能力还是 4K,更加需要针对 VR 视频设计一套性价比高的涵盖编码、传输、解码的端到端技术方案。


第三是传输延迟大,这和码率高有直接关系。只有在用户头部转动时,零延时切换视野内的画面,才能让用户切身体会到 VR 虚拟现实的空间沉浸感,这就对 8K VR 直播低时延有极高的要求。在降低码率的同时,我们也使用了一些额外技术来降低这类延迟。


解决方案

整体技术方案如下图所示,使用该方案后,码率降低 75%,端到端挥手延迟降低到 3 秒,移动画面延迟降低到 0 毫秒。



使用 VR 设备观看图像时,只会看到一个小矩形的区域。当头部转动时,会移动到另一个尺寸相同的矩形区域。这个矩形区域称为视野(FOV, field-of-view)。视野内的图像画面,我们称为 ROI(region-of-interest)。ROI 决定了用户能体验到的画面品质,ROI 区域外的图像由于用户看不到从而不会带来任何收益。


因此我们在直播编码器前处理环节将完整全景画面分割成 N * N 个子画面(如图示),例如分辨率是 7680x3840 的全景视频画面,切割成 4*4=16 个子画面,每个子画面分辨率 1920x960。用户使用 VR 设备播放的时候,只传输 ROI 的画面,终端也只解码 ROI 的画面。


如下图,16 个子画面是 tile0,tile1,…,tile15,ROI 是{tile0,tile1,tile2,tile4,tile5,tile6,tile8,tile9,tile10},终端只会下载 ROI 对应的码流。



头部转动时画面的延迟称为移动画面延迟(Motion-To-Photon Latency)。头部转动时 ROI 变化,终端缓存的 buffer 不再有效,移动画面延迟对应重新下载新 ROI 下的 buffer 的耗时。通过同时生产一路将完整全景画面缩小后的低质量画面,移动画面延迟优化为 0ms 没有延时。在网络下行差或者网络抖动的时候,播放低质量画面兜底,而一旦高质量 ROI 下载完成,便会优先呈现,保证直播画面清晰度和流畅度。


N * N+1 路画面之间用 PTS 严格同步,为了加快处理速度,直播云开发的并行处理程序能满足 8K60 帧视频的实时分割、编码。解码、画面前处理、编码全部使用硬件加速,每个模块间通过纹理内存传递,无需置换到内存成本,达到单机同时运行 17 路 1080p H.265 编码并发或者 65 路 540p H.265 编码并发。N*N+1 路码流除了 PTS 严格同步,关闭场景检测来严格对齐 I 帧,使用 Closed GOP、1s GOP size 来降低直播延时。


经过编码后的 8K 码流,总码率是 30Mbps 左右,通过直播云就近多点直播树回源、预推,快速分发到终端。由于用户在观看过程中随时可能转动视角,为了降低延时,我们设计了分块同源技术,保障终端设备在播放过程中只需从就近一台 CDN 边缘节点下载数据,极大降低终端设备与 CDN 间建立连接的次数。


目前,爱奇艺已完成多场大型活动 VR 直播项目,包括北京国际电影节、北京世界园艺博览会等。


未来爱奇艺也会在 VR 直播中提供支持环绕杜比全景声音的观赏体验,通过三维空间音效将用户更好的融入到直播现场中。


2019 年 8 月 23 日 13:595248

评论

发布
暂无评论
发现更多内容

裕民银行 x mPaaS | 移动应用“适老化”改造,可不止是字体变大

蚂蚁集团移动开发平台 mPaaS

mPaaS APP开发 移动开发平台

音视频学习--弱网对抗技术相关实践

Fenngton

网络 实时音视频 视频编解码 弱网下的极限实时视频通信 实时视频

C++多线程强制终止

华为云开发者社区

c++ 安全 线程 多线程 可信

【Vue2.x 源码学习】第三篇 - 对象的单层劫持

Brave

源码 vue2 6月日更

傲腾持久内存如何为数据赋能,加速应用落地?

白玉兰开源

人工智能 英特尔 傲腾

NCRE考试感想 三级信息安全(上)

万里无云万里天

信息安全 6月日更 NCRE 考试经验

分库分表 vs NewSQL 数据库

xcbeyond

分库分表 6月日更

超超超超级详细的多边形游戏问题分析(动态规划)

若尘

算法 动态规划 六月日更

ETL工程师必看!超实用的任务优化与断点执行方案

会飞的鱼

大数据 ETL算法 ETL ETL任务 ETL系统

获5项大奖,发布《云计算开放应用架构标准》,阿里云持续领航云原生

阿里巴巴中间件

Activiti工作流框架中的任务调度!工作流框架中的任务流程元素详解,使用监听器监听任务执行

攻城狮Chova

事件监听 任务 6 月日更

如履薄冰--亚马逊直运系统重构实录

蔡超

软件架构 软件重构 软件自动化测试

华云大咖说 | 安超OS全面升级 最新亮点解密

华云数据

6000年,看懂了「硬核山东」!

浪潮云

云计算

【Flutter 专题】113 图解自定义 ACEPieWidget 饼状图 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6 月日更

anyRTC Web SDK 实现音视频呼叫功能

anyRTC开发者

音视频 WebRTC RTC sdk

亮相Google I/O,字节跳动是这样应用Flutter的

字节跳动技术团队

有点难的知识点:Webpack Chunk 分包规则详解

范文杰

webpack 六月日更

🏆【声网Agora】「WebRTC-如何搭建语音认证服务」

李浩宇/Alex

WebRTC RTC征文大赛 Agora 6月日更 6 月日更

「Adobe国际认证」运用“对象选择”工具,在Adobe Photoshop中选择主体

Adobe国际认证

【通俗易懂】JWT-使用的可能正确姿势

Daniel

JWT 6月日更 6 月日更

【LeetCode】连续数组Java题解

HQ数字卡

算法 LeetCode 6月日更

踩准时钟节拍、玩转时间转换,鸿蒙轻内核时间管理有妙招

华为云开发者社区

鸿蒙 时间管理 计数器 时间转换 计时

Dubbo 线程池模型

青年IT男

dubbo

react源码解析5.jsx&核心api

全栈潇晨

React React Hooks

详解浏览器跨域访问的几种办法

华为云开发者社区

安全 浏览器 跨域 WEB安全 跨域访问

和12岁小同志搞创客开发:如何驱动各类型传感器?

不脱发的程序猿

DIY 传感器 如何驱动各类型传感器? 创客

Golang Testing 概览 - 基本篇

hedzr

golang Unit Test testing

5W1H聊开源之What——开源是什么?

禅道项目管理

开源 软件 开发

C 语言数据结构的封装方法

实力程序员

云原生时代跨语言间微服务的打法

Damon

Java 微服务 云原生 SpringCloud 6月日更

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

我们都是追梦人——爱奇艺8K VR直播技术方案-InfoQ