写点什么

网易视频云:从处理流程到细节优化,解读点播直播背后的技术

  • 2016-12-08
  • 本文字数:4043 字

    阅读完需:约 13 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

编者按

2016 年被视为直播元年,根据相关数字显示,目前中国互联网约有二百多款直播 App 和四百多家直播平台。其实,视频编码的研究由来已久,互联网规模化的视频服务也已经十余年。在 Vimeo 和 YouTube 正式成立前,最早的视频网络服务雏形可以追溯到 1997 年的一个网站。

网易第一个产品广为熟知是 2010 年的“全球名校视频公开课栏目”,首批上线有 1200 集课程,网易称其视频的技术积累已有十五年;如今,网易向外推出了视频云服务,支持点播和直播两种模式,其中直播又分为单向直播和互动直播。那么,网易视频云背后的技术沉淀是怎样的?除了传统的点播,如何应对新时代的直播业务?如何应对移动互联网等技术背景环境的变化?又怎样看待 VR、AR 浪潮对视频界的冲击?带着这些问题,InfoQ 采访了网易杭州研究院视频技术专家郭再荣先生,本文整理自采访内容。

嘉宾简介

郭再荣,网易杭州研究院视频技术专家,武汉大学通信专业硕士。十年音视频行业开发经验,从事视频编解码算法研发。在网易负责带领网易视频云音视频技术研发团队,主导音视频转码系统、实时视频通话引擎、流媒体服务器和网易视频云平台的研发工作。擅长音视频编解码器、视频加密、视频点播、互动直播服务的开发。

互联网视频产品始于六年前

在视频技术方面,网易最早开发视频点播服务、播放器、后台转码工具,主要用于网易系内部产品,比如网易门户网站视频、公开课、云音乐等产品,属于产品内部研发团队。后来随着需求的逐步增大,我们逐渐把把这些公共技术提取出来,整合成通用的平台工具,并服务于网易有视频需求的产品。

在视频转码系统的开发方面,前期我们已经累积了丰富的经验,经过不断的改进优化,已经逐渐形成了一套分布式转码集群:支持同步和异步的转码任务,负责多媒体数据的处理,这目前已经成为视频云产品的核心底层系统。同时,在提供视频点播服务中累积了丰富的流媒体分发网络方面的经验,包括中心调度策略、分发节点的选择、节点的加速传输方面的优化等,这套系统就是现在视频云产品的 CDN 分发网络的前身。

视频的处理流程及架构总览

通常而言,按时间的横向视频处理流程,一个视频从在客户端上传,到最后播放在另外一个播放器中,经历的流程如下:

视频的构架主要包括音视频采集、预处理、编码、传输、服务端处理、解码等步骤。

网易视频云视频处理包括推流端的预处理,服务端转码处理,播放器端的后处理几个部分,如下图所示。

点播 VS 直播的流处理

我们网易视频云目前为需求者提供点播和直播服务,同时包含互动直播服务,也提供视频转码和视频处理服务。对于视频云平台来说,拥有庞大的流媒体分发网络、强大的转码系统、海量分布式存储服务、功能完善的全平台 SDK 包非常重要。

在点播和直播的异同点上,我们通过如下构架图来表示,其实主要区别是视频源的生产方式不同,流媒体分发网络是一样,播放器端是一样,另外点播需要存储系统,而转码两者都可以有,具体要看各自的应用场景。

算法、硬件和网络三个维度

首先,网易视频云对音视频算法进行了深度优化。对于互联网视频,最重要的就是在保证视频同等质量的情况下,进行码率压缩。这样,在网络不佳时,尽量保证流畅;在网络抖动时,减少对播放带来的影响。除了压缩之外,对于近来兴起的直播业务,还需要对视频预处理。

在对音视频数据压缩编码时,要进行一些预处理,同时编码算法上尽量保证码率平滑。先来谈谈对于音频处理:从麦克风采集的音频,一般是 PCM 格式,视频从摄像头抓取图像,也可以抓取屏幕图片,一般是 YUV 格式。而采集到的原始音视频体积非常大的,需要经过压缩技术处理来提高传输效率。当有混音需求时,也可以通过采集声卡的音频数据,然后再跟麦克风的声音进行混音。对于采集的音频一般先要进行降噪处理,因为在户外环境下,噪声会比较明显。如果涉及到互动直播,在双向通话的情况下,还需要对音频进行回声抑制处理,防止出现回声效果。

再谈谈图像处理,对于直播业务:我们对于采集的图像会进行特效滤镜处理,比如黑白、黄昏、提亮、美颜等,但是这些处理非常耗费性能,一般都需要用 OpenGL ES 来实现,同时也可以进行图像叠加,比如给主播加个帽子,或者为了保护版权,加个水印图片。在播放器显示的时候也可以在头像上做一些处理,比如全屏的时候图像拉伸、填黑边、裁剪,也可加上走马灯,进行版权保护。再举例说明,比如在实时监控的场景中,要实现对于局部画面的实时放大;相对于直播中的预处理,这类操作属于后处理范畴。算法层面的加工主要有三点:预处理、后处理和编码。

其次,在硬件上面,客户端是依赖于用户已有的设备,我们的发力点是在服务器端。网易视频云有分布式转码集群,并采用软件和硬件结合的转码方式,对应到芯片依赖类别上则是 CPU 和 GPU,权衡两者结合使用:对于大并发的任务,利用 CPU 资源进行软件转码模式;而对于高实时性要求的任务就利用 GPU 资源进行硬件转码模式,特别是对于高清视频的转码,能达到更快的转码速度。结合直播应用而言,虽然依靠 CPU 计算的软件转码可以实时得到结果,但是这会造成资源的浪费。

另外,视频云自建流媒体分发网络,在全国部署了接流源站和分发节点,资源节点数量达到 500 个以上,并利用自有的智能调度系统,保证直播的流畅性;同时网易也自建了海外专线,保证海外数据流回到国内时走专门优化的链路,确保流畅度。

应对移动网络干扰

不管是直播还是点播服务,都存在一个端到端的数据传输链路问题。我们采用智能调度策略来解决这个问题,就是根据客户端的网络类型、地域、出口 IP 等信息,选择最优节点给客户端。最优节点的方案有两种:

  • 一种是根据客户端的 DNS 域名来选择就近的节点,当 DNS 配置有误的时候,可能会存在调度不准的问题。

  • 另外一种是根据客户端的出口 IP 来选择节点,这种调度方式会比较准确一些。同样对于播放器端也是采用类似的方式来选择流媒体服务器集群的边缘节点,另外也可以用 HTTP 302 跳转的方式来优化播放链路。

具体对应到两种播放模式的处理上:

对于点播来说,可以对同一个视频源部署多条流,即不同分辨率和码率的视频源,这样用户在观看的时候可以切换选择。

对于直播来说,视频云也提供实时转码功能,可以转码出多条不同分辨率和码率的直播流,这样用户在观看的时候可以切换选择。

视频界的发展历程及未来挑战

音视频编码既要尽可能地对文件压缩,同时又追求最高的音频和图像质量,还要能有更少的计算量,这三个目的指标是相互矛盾的。

从事视频编码近十年,在我看来:音视频编码标准正变得越来越复杂,能达到的音频和图像的质量也更好,压缩率也有较大提高,但是对应的算法计算量也越来越大,比如目前发展势头很猛的 H.265 标准。这一切的发展都是基于硬件设备性能越来越强大,可以承受更多的计算量。现在的手机 CPU 都能做 2K 的实时编码;若采用专有硬件编码芯片,那么性能就会更好。编码标准发展了,同等编码质量下的码率降低了,特别对于网络视频服务来说,用户观看视频更加流畅清晰了,企业的带宽成本也降低了。

在直播快速发展的同时,VR、AR 已经非常火爆,结合两者也是将来视频发展的趋势。但是在我看来,视频 VR 直播目前还有几大难点:包括采集设备、图像拼接算法、视频编码器、画面显示设备等。而目前的 VR 技术是从实验室刚开始转入应用的阶段,很多地方不完善,尤其是体验效果不佳、会让人感觉晕眩。此外,如果想要实际应用到网络视频,必须过了传输这关。VR 视频的分辨率非常高,至少 2K 以上,否则效果会比较差。多幅图像拼接之后,编码的码率就会非常高,一般在 10Mb 以上,互联网的传输也会有问题。因此,现在最多的也是一些离线的 VR 展示。另外,现在优质的采集和显示设备也比较贵,还达不到平民级的消费。目前还是在发展中,当然这是视频将来的方向。

其他问答

InfoQ:目前网易视频云对H.265 编码技术的研发是处于什么阶段?

郭再荣:H.265 的编码的研发目前仅限于内部,自编自解是没有问题的。但是 H.265 的解码技术在业内还没有普及,对于 web 播放器或者第三方播放器很可能无法播放。

不过 H.265 肯定是将来的趋势, 因为在画面越来越清晰之后,对于编码会造成很大的压力,同时带宽的需求压力也会上升。举例说明,如果使用 H264 编码需要至少 1.5M,使用 H.265 编码预计 1M 左右即可达到同样的效果。

InfoQ:用户是否可以在不同端之间切换观看?如果是的话,怎样做到内容的播放点的同步?

郭再荣:播放点的同步需要用 PTS 来做,首先切换流的时候,播放器要记住前一次的播放点的 PTS,然后再往前几秒发送切换流的 seek 请求,服务器会从一个关键帧开始发送数据,播放器定位到前一个 PTS 点,再开始播放,这样就可以做到同步。原理就是同一个视频源的多条流的 PTS 是一致的。

InfoQ:网易视频云进行了 WebRTC 协议框架的全方位支持。可否从技术角度分析下,什么样的直播场景中比较适合采用 WebRTC?

郭再荣:这里需要提及下我们的两种直播方式:单向直播、互动直播。我们首先完善了实时视频通讯系统,支持单向直播,在其基础上扩展多路混屏,旁路直播等功能。WebRTC 技术推荐适用于互动直播的场景。单向直播其实也可以采用 WebRTC 技术;不过一般而言,基于 RTP 传输技术能够保证更好的流畅度,特别是在网络环境比较差、丢包相对严重的情况下。而互动直播对低延时要求比较高,要实现多人通话,肯定是需要 WebRTC 技术,因为传统的 rtmp 直播技术,延时比较大。想利用浏览器直接进行实时音视频通信,或者进行直播服务,必须要采用 WebRTC 技术,这是他最大的一个优点,而且无需安装任何插件。

InfoQ:视频处理、图像处理中多大程度地应用了机器学习?对视频分类和实时监控中有多少人工参与的环节?

郭再荣:目前视频云已经接入网易易盾产品,在视频直播同时进行实时鉴黄,这个服务就是应用了机器学习:先对视频流进行截图,然后对图像进行智能分析以判断是否有违规内容,再上报到实时监控平台,最后经过人工审核,确保不会遗漏任何的违规行为。视频分类一般都是人工处理,是用户根据自身产品进行分类,而实时监控一般最后一关是人工审核,但占比重比较少。

公众号推荐:

AIGC 技术正以惊人的速度重塑着创新的边界,InfoQ 首期《大模型领航者AIGC实践案例集锦》电子书,深度对话 30 位国内顶尖大模型专家,洞悉大模型技术前沿与未来趋势,精选 10 余个行业一线实践案例,全面展示大模型在多个垂直行业的应用成果,同时,揭秘全球热门大模型效果,为创业者、开发者提供决策支持和选型参考。关注「AI前线」,回复「领航者」免费获取电子书。

2016-12-08 18:00114169
用户头像

发布了 58 篇内容, 共 43.0 次阅读, 收获喜欢 35 次。

关注

评论

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

我粉了!阿里大牛从内部带出来的百亿级高并发系统,从基础到实战、面面俱到

Java 程序员 架构 面试

百度 Serverless 架构揭秘与应用实践

百度开发者中心

百度 开源 Serverless 云原生

部署混合云环境的5大挑战

浪潮云

云计算

「DataPipeline」完成数千万B轮融资,加速构建中国的世界级数据中间件产品

DataPipeline数见科技

融资

MindSpore:不用摘口罩也知道你是谁

华为云开发者联盟

算法 人脸识别 口罩 mindspore 口罩人脸

阿里P9架构师强烈推荐:想拿60W以上年薪必看,Java高并发四套小册。

Java架构追梦

Java 阿里巴巴 架构 面试 高并发

iOS面试--拼多多最新iOS开发面试题

一意孤行的程序员

ios swift 面试 ios开发 知识分享

参与 Apache 顶级开源项目的 N 种方式,Apache Dubbo Samples SIG 成立!

阿里巴巴云原生

开源 开发者 云原生 dubbo 中间件

高级软件工程师必备的五大技能

架构精进之路

5月日更

2021年中国信创生态报告发布 指引未来信创产业发展

融云 RongCloud

飞猪基于 Serverless 的云+端实践与思考

阿里巴巴云原生

Serverless 容器 运维 云原生 监控

M1 Dock智能硬件环境搭建(MaixPy安装及使用)

不脱发的程序猿

人工智能 开发板 智能硬件 AIOT M1 Dock

极光开发者周刊【No.0521】

极光JIGUANG

「技术人生」第2篇:学会分析事物的本质

阿里巴巴中间件

技术 工具 技术人 技术人生 一号位

Hive窗口函数与分析函数

大数据技术指南

hive 5月日更

字节跳动Java岗一二三面全经过分享

北游学Java

Java 字节跳动 面试

首届HarmonyOS开发者创新大赛颁奖典礼于深圳召开

科技汇

玩转直播系列之消息模块演进(3)

vivo互联网技术

Java 服务器 消息系统 直播技术

Kubernetes 普及系列:容器基础入门

CODING DevOps

Kubernetes

仰望天空,脚踏实地 —— CODING OKR 全新上线

CODING DevOps

团队管理 OKR

推荐计划 | 推荐好友用 CODING,获高额返现奖励

CODING DevOps

团队管理 敏捷开发 研发工具 开发团队

记十亿级Es数据迁移mongodb成本节省及性能优化实践

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

ETL-KETTLE工具使用

this

Java 数据 数据同步 ETL

阿里云原生开源大家族加入中科院软件所开源软件供应链点亮计 - 暑期 2021

阿里巴巴云原生

开源 容器 微服务 开发者 云原生

Nginx的11个执行阶段详解

运维研习社

nginx 运维 源码剖析 5月日更

2021 DevOpsDays 东京站完美收官 | CODING 专家受邀分享最新技术资讯

CODING DevOps

DevOps CI/CD

Spark知识点简单总结

五分钟学大数据

大数据 spark 5月日更

并发王者课 - 青铜 3: 双刃剑-理解多线程带来的安全问题

MetaThoughts

Java 多线程 并发 王者并发课

做一次黑客,入侵一次服务器

叫我阿柒啊

Docker 入侵 docker远程 redis注入

每个开发人员都应该知道的 10 个 GitHub 仓库

LeanCloud

GitHub web开发

程序员写好技术文章的几点小技巧

阿里巴巴云原生

程序员 云原生 写作 写作技巧

网易视频云:从处理流程到细节优化,解读点播直播背后的技术_服务革新_木环_InfoQ精选文章