视频直播提供了完善的直播推流和播流服务。本文介绍完成视频直播流的推流与播流最基础的步骤。

视频直播基础流程

基础服务流程
  1. 主播使用采集设备采集直播内容,并通过推流SDK推送直播流到CDN分发节点。
  2. 视频直播服务通过边缘推流的方式将直播流推送至阿里云直播中心。推送的视频流通过CDN边缘节点进行加速保证上行传输的稳定性。
  3. 视频直播服务将直播流从阿里云直播中心推送到CDN分发节点。
  4. 观众可以通过播放SDK观看推送的直播流。

操作流程

操作流程
编号 节点 操作方式 操作 API参考 相关文档
1 准备工作 控制台 直播控制台
  1. 注册阿里云账号
  2. 个人实名认证企业实名认证
  3. 什么是阿里云域名服务
  4. 开通与购买视频直播
不涉及 不涉及
2 添加域名 控制台
  1. 添加域名
  2. 验证域名归属权
  3. 配置CNAME域名解析
添加直播域名 直播域名
3 关联域名
  • 控制台
  • API
关联域名
4 配置访问控制
  • 控制台
  • API
批量配置域名
5 生成地址 控制台 地址生成器 不涉及 获取推流地址和播放地址
6 推流 推流工具
  1. 下载并安装OBS推流工具
  2. 填写推流URL和流名称

请参见推流设置与操作

不涉及 推流、拉流与播流
7 播放 播放器
  1. 下载并安装VLC播放器
  2. 填写播放地址

请参见播放设置与查看

不涉及 推流、拉流与播流

支持协议

视频直播推流支持使用RTMP协议,播流支持使用RTMP协议、FLV协议、HLS协议和ARTC协议(低延时直播)。

  • RTMP

    RTMP(Real Time Messaging Protocol,实时消息传送协议)是Adobe公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。

    RTMP协议比较全能,既可以用来推送,又可以用来直播。其核心理念是将大块的视频帧和音频帧“剁碎”,然后以小数据包的形式在互联网上进行传输,且支持加密,因此隐私性相对比较理想,但拆包组包的过程比较复杂,所以在海量并发时容易出现一些不可预期的稳定性问题。

  • FLV

    HTTP-FLV协议由Adobe公司主推。

    格式极其简单,只是在大块的视频帧和音视频头部加入一些标记头信息,由于这种极致的简洁,在延迟表现和大规模并发方面都很成熟。唯一的不足就是在手机浏览器上的支持非常有限,但是用作手机端App直播协议却异常合适。

  • HLS

    HLS是苹果推出的解决方案。

    将视频分成5秒~10秒的视频小分片,然后用m3u8索引表进行管理。由于客户端下载到的视频都是5秒~10秒的完整数据,故视频的流畅性很好,但也同样引入了很大的延迟(HLS的一般延迟在10秒~30秒左右)。相比于FLV、HLS在iPhone和大部分Android手机浏览器上的支持非常足,所以常用于QQ和微信朋友圈的URL分享。

  • ARTC

    ARTC是阿里云提供的低延迟直播RTS(Real-time Streaming)解决方案使用的协议头。

    该方案参考WebRTC交互方式,采用UDP传输协议打造,实现可以承载大规模并发,端到端延时1秒内的低延时直播体验,同时对交互流程做了秒开优化,以及兼容更多的直播音视频特性例如AAC解码、B帧。RTS服务部署于阿里云直播节点,在接入成本、节点覆盖、承载能力上实现了平衡,大幅优化直播体验。

以上四种协议对比如下:

协议类型 延时 优点 缺点 特点 适合端 场景推荐
RTMP 1s~3s 延时低
  • 高并发下不稳定
  • iOS平台要开发支持相关协议的播放器
  • 使用非标准TCP端口
TCP长连接 PC端 实时性要求不高的直播
FLV 1s~3s
  • 延时低
  • 可通过HTML5解封包播放
需要集成SDK才能播放 TCP长连接 PC端 实时性要求不高的直播
HLS >10s
  • iOS、Android和H5原生支持良好
  • 可通过HTML5解封包播放
延时高 HTTP短连接 PC端、移动端 实时性要求不高的直播;移动端和H5端
ARTC 1s
  • 超低延时
  • 抗弱网能力强
H5播放不支持B帧和AAC音频(可通过阿里云RTS转码功能去除B帧并将音频转为Opus) UDP PC端、移动端 实时性要求高的直播,如电商带货、在线教育、社交互动等