个人直播背后的技术分析

文/胡小清

   作者简介:



2000 年加入华为,一直从事软件产品和解决方案的研发、系统设计、架构设计工作。

2007 年开始负责 MTV、SDP、MBB VGS、Video 解决方案和 CDN、STB 的架构设计工作,致力于打造全球竞争力第一的大视频解决方案。


个人直播


个人直播从 2014 年起步,到 2016 年发展到异常火爆,从游戏直播、秀场直播到移动直播,和我们以前说的娱乐视频直播有很大不同,主要体现在直播源端、CDN、互动性等方面,具体如下:



个人直播现在非常火热,美国的 Periscope(Twitter收购)、Facebook Live、Meerkat、韩国的 AfreecaTV 都在全球范围内掀起了热潮,国内有近 200 款终端 App,2 亿用户同时在线超过 400 万用户,按照分类:

  • 游戏直播:虎牙(原 YY )、斗鱼、战旗、熊猫、龙珠、TGA、全民 TV;

  • 秀场直播:映客、花椒、美拍、一直播;

  • 行业直播:电商、教育、O2O、新闻、赛事等各个领域。

目前几乎所有的视频云厂商均提供了个人直播服务:

  • 腾讯云:基于腾讯的私有协议(TX 加速媒体协议)提供互动直播服务,包括推流和拉流,腾讯是将互动直播和普通单向直播的方案区分开来,采用了不同的技术,在普通直播中提供 RTMP 推流/HLS 拉流的直播信号注入方式;

  • 百度云:音视频直播 LSS 服务,提供基于 RTMP 的直播服务,支持实时转码和录制,提供模板配置;

  • 阿里云:提供 Live Video 服务,基于 RTMP 推流,支持窄带高清转码技术;

国外的视频云服务目前主要针对娱乐视频点播和直播,提供基础能力,并没有提供互动直播的能力:

  • AWS:没有专门的媒体服务,只有一个 Transcoder 和 Elemental 转码服务;

  • Azure Media Service:微软云针对 Media 的服务,内容非常丰富,可以提供直播服务,基于 RTMP、RTP (TS)、Framented MP4 多种输入提供直播服务,直播时延在 2s 左右,但没有针对互动直播视频的应用场景。

本文针对个人直播的流程和技术进行分析,下图展示了从视频生产、视频源处理、视频递送、视频消费的四个环节的交互流程:




关键技术

1、RTMP(Real Time Messaging Protocol)

个人直播中大家了解到最多的技术是 RTMP,基于实时的媒体流传送技术;但传统 RTMP 基于 TCP,需要 TCP 三次握手、慢启动等拥塞控制算法导致启动速度慢,对网络容忍度低;RMTP 支持推流和拉流两种方式;

基于 RTMP 的变种协议包括:

  • RTMPT:将 RTMP 打包在 HTTP 中,实现防火墙穿越,默认端口80;

  • RTMPS:通过 SSL 加密传送 RTMP,默认端口 443;

  • RTMPE:加密传送 RTMP,但不是采用 SSL,默认端口 1935;

  • RTMPTE:通过加密通道连接的 RTMPE。

Adobe 针对实时音视频传输又推出了 RTMFP,请注意 RTMFP (Real-Time Media Flow Protocol),这个协议和 RTMP 没有什么关系,采用 UDP 传送,是 Adobe 针对音视频实时传送而设计的,支持网络丢包和快速重建连接,并且支持 P2P 点对点传送;但 RTMFP 目前应用度并不如 RTMP 高,在直播场景下 RTMP 的开源终端软件和服务端软件商用程度极高。

将 RTMP 改造通过 Reliable UDP 的思路是为了解决 TCP 的传输效率问题,可以实现快速建链、快速重传支持传输速度提升 5-10 倍;

RTMP Specification 在这里可以获取到:

http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf

2、直播源视频生产关键技术

源端处理技术:水印技术、Logo、字幕、美颜滤镜、人脸检测、直播道具、PC 桌面共享;

高性能低功耗编码:通过 GPU 加速、降低编码性能消耗,在移动端考虑降低功耗;采用硬件 H.264 编码/H.265 编码,如何解决异构终端的适配难题,目前大部分应用倾向于软解。

3、300 ms 快速启播/快速切换

直播启动的时间在什么水平是客户可以接受的,下面是用户调查的数据,300 ms 以下的直播体验是非常好的,目前互联网个人直播平台的普遍的时间在 2000 ms 以上,花椒直播的启播速度相对快一些,在 1000 ms-2000 ms:



直播频道启动或者切换的技术实际上在娱乐直播中没有任何区别,直播切换启动慢的主要原因,主要来源于 CDN 和直播客户端,主要的解决办法:

  • CDN 预缓存 GOP,以高倍速推送,缩短I帧等待时间;

  • 播放端识别首个关键帧即启动播放;

  • 视频优先模式,音视频同步后处理。




4、降低卡顿

在个人直播中最常见的是卡顿,直播卡顿主要来自于三个原因:

  • 直播源的处理和编码性能不足,出现丢帧和卡顿;

  • 直播源到 CDN 的丢包;

  • CDN 到终端侧的丢包。

据统计直播卡顿中 80% 来自于直播源上行环节的卡顿。

针对这三个问题的解决办法分别是:

  • 面向个人直播的 CDN 网络:将单向分发型 CDN 改造成双向分发型 CDN、支持上行智能调度、提供低时延高效传输、提供网络质量上行 QoE 质量保障;

  • 高效的传输协议:基于 UDP 构建高效、可靠的视频传送通道,支持在高丢包、高时延抖动的网络下保障视频的实时性和防卡顿;

  • JITT 的实时转码:将高效转码、水印服务、视频处理等技术融合提供实时的媒体处理服务,边缘节点需要具备这些能力;

  • 直播源码率自适应:根据直播源的媒体处理和编码能力调整码率,在直播设备性能不能满足要求的情况下,主动降低帧率和码率,降低直播源视频处理、视频编码、打包带来的卡顿,通常是由于 CPU/GPU 处理性能不足带来的卡顿。


(更多华为资讯请关注华为开发者社区,华为自己的对外开放门户:http://developer.huawei.com/ict/cn/ ,不要问我叫啥,别人都叫我雷锋)



  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值