视频直播之互动直播业务接入实践-阿里云(云淘科技)

使用场景

互动直播成为目前信息交互的重要载体,众多客户在自身业务中逐步增加直播的比重,新用户如何能快速使用阿里云的视频直播服务是本实践的出发点,本文将结合实际业务场景介绍相关功能和产品方案,由于篇幅有限文中不涉及超低延时直播RTS相关内容。

目标用户

计划使用阿里云视频直播产品的用户。

方案优势

  • 通过产品架构图一目了然搭建直播服务的功能组成,能有全局的产品化概念。
  • 官网功能文档较多,如何能站在使用者的视角将有用的信息和注意点串联起来。

产品架构图

完成一次互动直播必须的功能要素包括如下:

  • 推流设备:需要具备推流软硬件环境,我们常见环境如PC搭配OBS软件,如果您有自行设计的推流软件,可以参考阿里云多终端的适配推流SDK。
  • 推流地址:需要为推流设备提供一个地址,常见的为RTMP地址,通过该地址可以将本地编码的音视频数据上行传输,为此您需要在阿里云添加相关推流域名。
  • 播流地址:终端观众可以通过播流地址观看到推流设备上送的直播内容,场景的播放终端包括web浏览器、APP、小程序等,播放的主要协议包括RTMP、FLV和HLS。

除去以上必备功能要素,以下也是互动直播中非常重要的可选择要素:

  • 直播录制:将直播的整个过程录制进行留存、二次剪辑等,通过直播录制可以形成丰富的素材库用于业务回溯和内容生成。
  • 直播截图:实时截图可以用于视频封面更新、留存审核等需要,支持覆盖截图和实时截图两种模式。
  • 直播转码:通过直播转码同一路直播可以形成多个清晰度的播放地址,用于适配不同终端网络环境的用户,另外阿里云的窄带高清产品可以在低码率下获取不错的播放质量,可以让用户在优化成本的同时兼顾终端用户的观看体验。
  • 直播水印:如果想把一些水印logo在直播过程中进行展示,可以使用阿里云的直播水印能力。
  • 直播安全:当直播业务搭建完成后,进一步需要考虑直播内容的安全,避免出现一些非预期的盗推、盗播等。

本文选取为初期组建互动直播的必要功能,更多详见 https://help.aliyun.com/document_detail/90180.html

功能介绍

本章节将拆分出不同的功能要素展示业务实际接入中可能遇到的问题和困惑:

1. 推拉流配置

  • 域名映射配置(添加下具体配置方式)
映射类型 配置方式
一个推流域名映射一个拉流域名 在拉流域名上关联对应推流域名,详见 https://help.aliyun.com/document_detail/108531.html
多个推流域名映射一个拉流域名 在拉流域名上关联多个推流域名,详见 https://help.aliyun.com/document_detail/108531.html
一个推流对应多个拉流域名 在主播流域名下关联多个子播流域名用于播放同一路流,配置详见https://help.aliyun.com/document_detail/172830.html
多个推流域名映射多个拉流域名 该配置分两步实施:在拉流域名上关联多个推流域名;在主播流域名下关联多个子播流域名用于播放同一路流。
  • 推流地址和播放地址生成

直播过程需要完成推流地址和拉流地址的构造,详情可参考 https://help.aliyun.com/document_detail/199339.html阿里云提供了相关地址生成工具,通过工具快速生成对应播放地址 https://help.aliyun.com/document_detail/197400.html

  • 协议输出

阿里云支持一个域名同时输出多种播放协议,包括RTMP、FLV和HLS;

2.视频录制

阿里云视频录制支持录制到OSS和录制到VOD,二者主要特性如下,按需选择

类型 OSS VOD
开通服务 需要开通OSS产品,详见 https://help.aliyun.com/document_detail/84932.html 开通视频点播VOD服务,详见 https://help.aliyun.com/document_detail/51512.htm
配置方式 关键步骤:详见:https://help.aliyun.com/document_detail/84931.html 关键步骤:详见:https://help.aliyun.com/document_detail/199445.html
回调差异 直播控制台配置录制时可以直接添加,录制到oss 文档中有配置说明 在vod控制台添加回调地址
回调格式 { “domain”: “demo.aliyundoc.com”, “app”: “liveApp****”, “stream”: “liveStream****”, “uri”: “liveApp****/liveStream****/0_2017-03-08-23:09:46_2017-03-08-23:10:40.flv”, “duration”: 69.403, “start_time”: 1488985786, “stop_time”: 1488985840, “push_args”: { “callback_args1”: “value1”, “callback_myid”: “1231389741” } } { “EventTime”: “2017-12-08T09:26:17Z”,”EventType”: “AddLiveRecordVideoComplete”, “VideoId”: “43q9fjdhef****”, “Status”: “success”,”StreamName”: “xxx”,”DomainName”: “xxx”,”AppName”: “xxx”,”RecordStartTime”:”2017-12-08T07:40:56Z”,”RecordEndTime”:”2017-12-08T09:26:17Z”,}
支持录制索引 https://help.aliyun.com/document_detail/35417.html https://help.aliyun.com/document_detail/64761.html
注意事项 oss bucekt 要和直播中心一致 录制需要在对应账号下的VOD

3.视频截图

阿里云视频截图支持OSS,开通OSS服务并且将Bucket设置为媒体Bucket

开通产品 视频直播: https://www.aliyun.com/product/live对象存储OSS:https://www.aliyun.com/product/oss
配置方式 截图配置步骤:https://help.aliyun.com/document_detail/199448.htmlOSS配置步骤:https://help.aliyun.com/document_detail/84932.html
注意事项 oss bucket务必和直播域名的直播中心保持一致。直播域名的直播中心可以通过域名管理里面查询创建oss bucket的时候,地域选择到对应的区域即可
回调通知 复用直播录制配置的回调接口回调格式:{ “Event”:”Snapshot”, “DomainName”:”demo.aliyundoc.com”, “AppName”:”liveApp****”, “StreamName”:”liveStream****”, “OssBucket”:”liveBucket****”, “OssEndpoint”:”oss-cn-shan****.aliyuncs.com”, “OssObject”:”1****.jpg”, “CreateTime”:”2015-12-01T17:36:00Z”, “SnapshotUrl”:”http://liveBucket****.oss-cn-shan****.aliyuncs.com/1****.jpg”, “Size”:”36291″, “Width”:”1280″, “Height”:”720″ }

4.视频转码

相关转码能力说明

类别 使用场景 自助配置项 其他配置 链接
通用转码 默认转码模板格式。分辨率只固定一条边,另外一条边按比例自适应。 appname、转码模板类型 https://help.aliyun.com/document_detail/199441.html
自定义转码 适用于特殊转码场景,对码率,分辨率有定制要求 appname、转码模板类型、分辨率、码率、帧率、帧数(gop) 帧率配置为60或者超过60是需要提交工单 https://help.aliyun.com/document_detail/90616.html

5.业务转推

背景说明:转推为主播推流至阿里云直播后,由阿里云推送至您的源站或其他直播平台,满足多平台分发的需求控制台配置文档:https://help.aliyun.com/document_detail/310954.html

6.直播安全

本文将介绍跟业务契合度较高的直播安全功能,供业务选择使用

安全机制 安全手段 特点 安全等级 使用门槛
安全加速 HTTPS安全加速 HTTPS协议是以安全为目标的HTTP通道,将HTTP用SSL/TLS协议进行封装。 低,仅需云端配置
访问控制 User-Agent黑白名单 基于HTTP Header跟踪来源,但极易伪造。 低,仅需云端配置
Refer防盗链 基于HTTP Header跟踪来源,但极易伪造。 低,仅需云端配置
IP黑白名单 拒绝或只允许特定IP访问,不适合大量C端用户的分发。 较低 低,仅需云端配置
推流播流URL鉴权 推流和播放的URL鉴权 支持自定义的鉴权Key和鉴权失效时间,动态生成鉴权URL。 较低,提供生成鉴权脚本
业务方远程鉴权 透传业务请求信息给客户自定义鉴权中心来判断合法性 客户添加自定义的业务请求信息,通过自建鉴权中心,更加精准识别合法请求。 较高,需部署鉴权中心,并确保高可用
视频安全 阿里云视频加密 云端一体的视频加密解决方案,采用私有加密算法对视频流加密,确保视频流安全传输。 较低,简单配置并集成阿里云播放器即可
DRM加密 苹果Fairplay、谷歌Widevine的原生支持,安全级别很高,满足大的版权内容提供商的要求。 较高,按调用license次数进行收费,只需集成阿里云播放器SDK
内容安全 智能审核 对直播流的视频和音频进行审核,自动检测视频和语音内容是否涉嫌违规。 低,仅需云端配置
禁推流 支持直播流进行禁止推流的处理,可自定义禁推时间。 低,仅需云端配置

更多的安全相关信息可参考 直播安全概述 – 视频直播 – 阿里云

业务运维

1.性能优化

降低延迟延迟造成的原因众多,推流端和服务端需要共同配合才能达成:推流端延迟,将GOP帧设置为1秒~2秒,减少播放器加载GOP帧所用的时间来降低直播延时。控制台GOP设置,请参见自定义转码;API接口配置,请参见添加直播流自定义转码配置延迟优化:对直播延迟进行配置,根据不同的播流协议来配置延迟时间,详见 https://help.aliyun.com/document_detail/199451.html降低卡顿播放端下行带宽不足: 直播拉流码率需求高于播放端下行带宽,处理方法:1. 降低推流端码率。2. 播放低码率转码流。转码流配置方法,参考功能配置中转码配置。推流端上行带宽不足:处理方法: 降低推流端推流码率。

2.业务运维

业务突发重大直播活动,带宽远远高于日常带宽的情况下,建议通过企业服务群工单等方式进行报备申请。常见API集成

类别 描述 API地址
业务监控 查询单路流状态 https://help.aliyun.com/document_detail/315391.html
推流数量限制和转码数量限制 https://help.aliyun.com/document_detail/201953.html
实时流帧率和码率(延迟约5min) https://help.aliyun.com/document_detail/130665.html
直播流在线人数 https://help.aliyun.com/document_detail/130664.html
某时间段内帧率和码率信息 https://help.aliyun.com/document_detail/35424.html
运维能力 直播流禁用/启用 https://help.aliyun.com/document_detail/35414.htmlhttps://help.aliyun.com/document_detail/35413.html
  • 监控报警

阿里云提供了丰富的监控指标,包括带宽峰值、推流上行并发数等,更多的监控项详见 https://help.aliyun.com/document_detail/165113.html

报警类型 配置方式 备注
带宽峰值 云监控控制台–>云产品监控–>视频直播–>创建报警规则–>选择资源范围(全部资源,应用分组,实例)–>关联资源–>添加告警规则,选择告警类型,设置阈值 针对域名带宽告警
推流上行并发数 推流路数告警
推流上行带宽 推流带宽告警
下行播放流量
每秒访问次数
返回码4xx占比
返回码5xx占比
  • RAM权限控制

当需要为其他业务部分提供使用账号时,可以借助RAM权限控制进行子账号的管理,权限管理描述:https://help.aliyun.com/document_detail/199333.html创建RAM用户并授权:https://help.aliyun.com/document_detail/199334.html

  • 配额管理(不要写死,引用官网文档)

默认域名支持配额:原始流转码流官网详情: https://help.aliyun.com/document_detail/97026.html

  • 配额申请

通过配额中心进行申请:操作详细步骤参见文档:https://help.aliyun.com/document_detail/420270.html

常见问题

一. 推流不成功、推流失败:

  • 推流域名解析是否正确; 解决办法:host到解析测试节点或者域名解析到控制台cname地址。
  • 防盗链、鉴权是否合法;解决办法:重新按照鉴权方式生成防盗链。
  • 推流域名是否关联拉流域名;解决办法: 控制台上推流域名关联对应拉流域名。
  • 二. 拉流不成功、拉流失败:

  • 拉流域名解析是否正确; 解决办法:host到解析测试节点或者域名解析到控制台cname地址
  • 防盗链、鉴权是否合法;解决办法:重新按照鉴权方式生成防盗链。
  • 对应推流域名是否推流成功,回源拉流源站是否有流。解决办法:检查推流端情况,或者到控制台查看是否推流,没有推流信息,则按推流不成功方法进行排查,回源拉流检查源站流情况是否正常。
  • 发表评论