本文介绍开通视频直播的若干功能,以及在视频直播控制台配置AUI Kits课堂场景依赖的推拉流域名、消息应用等配置项,以便使用AUI Kits课堂场景。
前提条件
您已注册阿里云账号并完成账号实名认证。
注册地址,请参见阿里云官网。
注册指引,请参见注册阿里云账号。
实名认证指引,请参见个人实名认证或企业实名认证和个体工商户认证。
已开通视频直播服务。具体操作,请参见开通服务。
您已经准备好推流域名和播流域名,并完成备案。具体操作,请参见备案。
说明如果您的直播中心在海外且加速区域采用海外及港澳台加速,则域名无需经过备案。
如果推流域名和播流域名是同一个一级域名下的两个二级域名,则只需要将一级域名进行备案。
已添加AliyunFCFullAccess、AliyunLiveFullAccess、AliyunVODFullAccess系统权限策略。具体操作,请参见创建RAM用户并授权。
操作步骤
在视频直播控制台配置AUI Kits课堂场景依赖的推拉流域名、消息应用等配置项。
步骤一:添加推流域名和播流域名
视频直播服务分上行推流和下行播流。上行推流通过推流域名就近接入直播流,下行播流通过播流域名进行分发加速。
您可以观看视频讲解学习如何添加域名,详情请参见添加域名。
登录视频直播控制台。
在左侧导航栏单击域名管理,进入域名管理页面,单击添加域名。
根据实际业务需求分别添加推流域名和播流域名,并配置域名参数。
参数
参数分类
说明
业务类型
播流域名
推流域名
指域名的加速类型,推流域名与播流域名分别对应推流加速与播流加速。初次配置后不可更改。
说明添加推流域名时,业务类型请选择推流域名;添加播流域名时请选择播流域名。
您无法将同一域名既添加为推流域名,又添加为播流域名。
加速域名
无
输入您需要加速的域名。注意事项如下:
说明子域名必须在同一个账号下。您在添加域名时,直播服务会进行检查,如果子域名被添加到不同账号,系统会报错。
加速区域
中国内地
当主播在中国内地时,推流域名应选择中国内地。
当观众在中国内地时,播流域名应选择中国内地。
域名需要在工信部备案,推荐您进入阿里云ICP代备案管理系统进行备案。
全球加速
当主播在中国内地、中国香港、中国澳门、中国台湾以及其他国家和地区时,推流域名应选择全球加速。
当观众在中国内地、中国香港、中国澳门、中国台湾以及其他国家和地区时,播流域名应选择全球加速。
域名需要在工信部备案,推荐您进入阿里云ICP代备案管理系统进行备案。
海外及港澳台加速
当主播在海外及中国香港、中国澳门、中国台湾时,推流域名应选择海外及港澳台加速。
当观众在海外及中国香港、中国澳门、中国台湾时,播流域名应选择海外及港澳台加速。
如果选择海外及港澳台加速且直播中心在海外,则域名无需在工信部备案。
如果选择海外及港澳台加速且直播中心在中国境内,则域名需要在工信部备案。推荐您进入阿里云ICP代备案管理系统进行备案。
说明关于如何选择CDN加速区域,请参见如何选择域名的CDN加速区域?。
直播中心
无
直播中心用来提供云上直播流的媒体处理服务,如截图、录制、转码、云导播等。
需要关联的直播推流域名与播流域名的直播中心所在地域要保持一致,初次配置后不可更改。
关于如何选择直播中心,请参见如何选择直播中心?。
单击下一步,配置CNAME。
启用视频直播加速服务,需要将您的域名(推流域名和播流域名)指向阿里云视频直播分配的CNAME地址。此处以DNS服务商为阿里云(原万网)为例介绍配置CNAME的方法。更多DNS服务商及操作详情,请参见配置域名的CNAME解析。
分别添加完推流域名和播流域名后,需将推流域名和播流域名进行关联。
在域名管理列表,找到目标播流域名,单击域名配置,进入直播管理 > 基本配置页面。
在基本配置中,单击推流信息页签,并单击未配置或添加推流信息按钮。
选择要关联的推流域名,单击确定。
分别为推流域名和播流域名开通RTS 1.0。
说明2022年7月15日起,新域名默认开启使用超低延时直播。如果你的域名未开启低延时推流(RTS 1.0),请根据以下步骤手动开启
推流域名配置:找到目标推流域名,单击域名配置,在左侧导航栏选择超低延时推流RTS,打开RTS推流开关,选择低延时推流(RTS 1.0),单击确定。
播放域名配置:找到目标播流域名,单击域名配置,在左侧导航栏选择超低延时播放RTS,打开RTS播放开关,选择低延时推流(RTS 1.0),单击确定。
如果使用Web端播放则需要设置跨域,配置播流域名HTTP消息头
Access-Control-Allow-Origin
。具体操作,请参见配置HTTP消息头。播流域名启用HTTPS功能。具体操作,请参见配置HTTPS安全加速。
步骤二:配置自定义鉴权
URL鉴权功能旨在保护用户站点的内容资源不被非法站点下载盗用。域名初次添加时,默认开启URL鉴权。
鉴权功能开启状态下,有默认鉴权和自定义鉴权两种鉴权方式,您可按需选择默认鉴权或自定义鉴权。采用默认鉴权无需设置。如不采用默认配置,您也可以对鉴权主KEY、备KEY、有效时长进行自定义。
初次关闭URL鉴权,需要了解盗刷风险并签署《直播服务关闭URL鉴权免责协议》。建议您保持默认开启状态,否则会出现直播被盗录、盗播的风险。
您可以观看视频讲解学习如何配置URL鉴权,详情请参见配置URL鉴权。
在视频直播控制台域名管理页面,分别选择目标推流域名和播流域名,单击域名配置。
选择直播管理 > 访问控制,进入访问控制页面。
单击URL鉴权页签,单击修改配置,配置URL鉴权信息,然后单击确定。
URL鉴权更多信息,请参见配置URL鉴权。
配置项
说明
鉴权类型
视频直播播流域名仅支持使用鉴权A,来实现对源站资源的有效保护。
说明URL鉴权错误,都会返回403报错,请重新计算。
MD5计算类错误
例如:
X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760be
时间类报错
例如:
X-Tengine-Error:denied by req auth: expired timestamp=1439469547
主KEY
当您添加域名时,控制台会随机生成一个主用密码。您可以通过在直播控制台左侧的导航栏选择域名管理,选择您需要配置的域名,单击
,在URL鉴权页面查看主用密码。您还可以重新输入自定义的鉴权方式对应的主用密码。备KEY
输入自定义的鉴权方式对应的备用密码。
有效时长
有效时长是指该URL鉴权仅在有效期内可用来发起推流或者播放。直播推流和播放都是长链接行为,在有效期内已经发起的直播推流或者播放行为,不会因为有效期过期而中止,但新发起的推流和播放请求会因为有效时长过期而失败。
第一次添加新域名默认有效时长为1天(即1440分钟)。你可以自定义输入鉴权方式的默认有效时长,最小设置为1分钟,无上限限制。单位:分钟。
完成后,请记录并保存推流域名和播流域名的鉴权主KEY,以便后续部署服务端使用。
步骤三:创建直播互动消息应用
登录视频直播控制台。
在左侧导航栏选择
,进入应用管理页面。单击创建应用。
在创建应用对话框中,根据实际需求配置参数。
参数
说明
区域
选择创建应用区域:华东2(上海)、新加坡。
应用名称
应用名,长度2~16个字符。
回调设置
回调设置开关默认关闭,如果您开启回调设置开关,在回调地址输入框中输入内容。回调地址内容格式请参见创建互动消息应用。
回调地址
安全审核
安全审核开关默认关闭,开启安全审核开关后可选择安全审核方式。
内置安全审核。
自定义安全审核:需要输入安全审核地址。自定义安全审核内容格式,请参见自定义安全审核内容说明。
审核方式
单击创建。应用列表会新增创建的应用,并自动生成AppId、AppKey、AppSign、创建时间等信息。
步骤四:创建实时音视频应用
随着直播时延越来越低,观众与主播之间不仅满足于单向的视频推播流,实时音视频成为直播间内以及直播间之间常见的互动方法。
在视频直播控制台左侧导航栏,单击场景服务 > 实时音视频(原互动直播) > 应用管理。
在应用管理页面,单击创建应用,填写自定义的实例名称,勾选服务协议后,单击立即购买。
说明创建应用默认不产生费用 , 实际按照您具体云上用量后付费。计费详情,请参见互动直播费用。
提示开通成功后,刷新应用管理页面,即可查看您新建的实时音视频应用。在实时音视频应用管理页面单击操作列的管理,您可以查询实时音视频应用ID和AppKey。
单击实时音视频应用,在旁路转推页面,全局旁路转推至阿里直播区域,开启单流转推,并配置直播播放域名 。
单击确定。配置完成后,请记录并保存应用ID、AppKey、AppName,以便后续部署服务端使用。
步骤五:(可选)创建SDK License
AUI Kits依赖的MediaBox音视频SDK需要License授权,集成方可以根据业务需求创建必要的SDK License。您可以通过视频直播控制台对直播推流SDK基础版/互动版、美颜特效SDK、播放器SDK模块进行下载和集成操作。具体操作,请参见我的授权。
步骤六:(建议)配置转码模板
若您的音视频应用通过Web向用户提供超低延时直播(RTS)观看的功能,建议您配置转码模板以确保兼容性。
超低延时直播Web RTS SDK对音视频解码存在以下限制。详细信息,请参见超低延时直播。
不支持视频含B帧,否则会出现画面跳跃。
不支持AAC编码,否则会出现噪音。
建议您使用RTS超低延时直播时推流配置为不含B帧。如果您无法控制直播推流输入情况,可以使用RTS转码功能自定义设置转码的分辨率、帧率、码率、音频编码格式、B帧等参数。
- 在视频直播控制台左侧导航栏,单击域名管理,进入域名管理页面。
选择您要配置的播流域名,单击域名配置。
单击 。
单击RTS转码页签,单击添加。
配置转码模板。
转码模板参数及说明如下表所示。
参数
说明
AppName
AppName必须与推流地址中的AppName名称对应,转码模板才能生效。
转码模板类型
转码模板类型:标准模板、窄带高清™模板、原画模板和纯音频转码模板。
标准模板和窄带高清™模板质量和性能不同,价格也不同。原画模板不对视频进行处理。纯音频转码模板删除视频只输出OPUS音频流。
分辨率
视频输出的分辨率,单位:像素。不同的分辨率档位对应不同的价格,分辨率档位如下所示:
LD:(640X480)及以下。
SD:(1280X720)及以下。
HD:(1920X1080)及以下。
2K:(2560X1440)及以下。
4K:(3840X2160)及以下。
说明自定义转码计费根据分辨率档位(LD、SD、HD、2K、4K)决定,与通用模板中标准模板的模板ID(包括lld、lsd、lhd、lud)和窄带高清™模板的模板ID(包括ld、sd、hd、ud)无关,请勿混淆。
分辨率档位判定规则:输出规格按输出视频分辨率的长边和短边是否属于输出规格划定的范围进行判定。
以输出SD(1280X720)规格为例:
如果输出视频的分辨率长边小于等于1280且短边小于等于720,则该视频属于该输出规格。
如果输出视频的长边大于1280或输出视频的短边大于720,则该输出视频属于更高的输出规格。
视频码率
分辨率使用指定的码率,单位:kbps。分辨率档位指定的码率如下所示:
LD:100~800。
SD:200~1500。
HD:500~4000。
2K:2000~8000。
4K:4000~30000。
视频帧率
输出视频帧率,数值低于或等于输入帧率。
视频GOP
输出视频GOP即Group of picture(图像组),指两个I帧之间的间隔,数值低于或等于输入值。为了保障低延时效果不能大于3秒。
去B帧
开启时:输出视频编码将不含B帧。
OPUS转码
开启时:输出音频编码将改成OPUS编码,48 KHz采样率。
触发转码
开启时:首次拉流时才启动转码。
关闭时:只要有推流就启动转码,与是否有拉流无关。
模板ID
转码模板ID。
模板ID是拼接转码地址的参数,拼接方式参见生成推流地址和播放地址。输出的直播地址后携带模板ID参数即可访问指定分辨率的转码流。
重要请勿设置与通用转码模板ID相同的模板ID。通用转码模板ID包括:lld、lsd、lhd、lud、ld、sd、hd、ud。
单击确定。
步骤七:(建议)配置录制回放
通过视频直播的录制功能,为您的音视频应用实现直播录制回放能力。AUI Kits课堂场景Web老师端推流使用的音频格式是Opus。如需直播回看,需要添加录制配置以确保录制回放的兼容性。更多信息,请参见录制管理。
录制到视频点播(推荐)
- 在视频直播控制台左侧导航栏,单击域名管理,进入域名管理页面。
选择您要配置的播流域名,单击域名配置。
单击 。
单击存储至VOD页签,单击添加。
在弹窗中选择对应的转码模板,单击确定即可。录制模板参数及说明更多信息,请参见录制存储至VOD。
说明建议在转码模板中将音频转码为AAC格式以确保兼容性。
若未在视频点播中配置转码模板,请前视频点播控制台进行配置。
录制到OSS
- 在视频直播控制台左侧导航栏,单击域名管理,进入域名管理页面。
选择您要配置的播流域名,单击域名配置。
单击 。
在弹窗中开启录制转码流 ,转码模板ID选择oriaac,单击确定即可。详细配置说明,请参见录制存储至OSS。
步骤八:获取互动白板AppKey与AppSecret
在网易云信控制台首页的应用管理栏中找到创建的应用,单击应用名称。
在应用配置导航栏中,单击AppKey管理页签。
查看并记录该应用的AppKey、AppSecret。
关于互动白板,更多配置请参见互动白板新手接入指南。
步骤九:创建数据库
配置好数据库后,以MySQL为例,按照如下示例创建数据库表。
使用阿里云数据库RDS创建数据表的更多信息,请参见使用流程。
CREATE TABLE `class_infos` (
`id` varchar(256) NOT NULL COMMENT '课堂ID',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '修改时间',
`title` varchar(256) DEFAULT NULL COMMENT '课堂标题',
`anchor` varchar(256) DEFAULT NULL COMMENT '课堂主播',
`extends` mediumtext COMMENT '扩展字段',
`status` bigint DEFAULT NULL COMMENT '1-开始上课,2-结束上课,0-暂停或没有上课',
`mode` bigint DEFAULT NULL COMMENT '0-公开,1-大班,2-小班',
`a_li_yun_id` varchar(256) DEFAULT NULL COMMENT 'IM群ID',
`pk_id` varchar(256) DEFAULT NULL,
`notice` varchar(256) DEFAULT NULL COMMENT '课堂公告',
`meeting_id` varchar(256) DEFAULT NULL COMMENT '连麦ID',
`cover_url` varchar(256) DEFAULT NULL COMMENT '封面图,预留字段',
`teacher_id` varchar(256) DEFAULT NULL COMMENT '老师ID',
`teacher_nick` varchar(256) DEFAULT NULL COMMENT '老师昵称',
`vod_id` varchar(256) DEFAULT NULL,
`meeting_info` mediumtext COMMENT 'JSON字符串,连麦观众信息',
`started_at` datetime DEFAULT NULL COMMENT '课堂的开始时间',
`stopped_at` datetime DEFAULT NULL COMMENT '课堂的结束时间',
`boards` mediumtext COMMENT '白板信息, JSON字符串',
`rong_cloud_id` varchar(256) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_create_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
CREATE TABLE `doc_infos` (
`doc_id` varchar(256) NOT NULL COMMENT '文档id',
`class_id` varchar(256) NOT NULL COMMENT '课堂id',
`server_type` varchar(256) NOT NULL COMMENT '文档类型',
`doc_infos` mediumtext COMMENT '文档信息, JSON字符串',
`created_at` datetime DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`doc_id`,`class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
CREATE TABLE `class_member` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`class_id` varchar(256) NOT NULL COMMENT '课堂id',
`user_id` varchar(256) NOT NULL COMMENT '用户Id',
`user_name` varchar(256) NOT NULL COMMENT '用户名',
`user_avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像',
`identity` tinyint NOT NULL COMMENT '身份。1-学生,2-老师',
`status` tinyint NOT NULL COMMENT '状态。1-正常,2-退出, 3-踢出',
`created_at` datetime NOT NULL COMMENT '创建时间',
`updated_at` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `udx_class_user_id` (`class_id`,`user_id`),
KEY `idx_class_created_at` (`class_id`,`created_at`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=208 DEFAULT CHARSET=utf8mb3
CREATE TABLE `class_kick_member` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`class_id` varchar(256) NOT NULL COMMENT '课堂id',
`user_id` varchar(256) NOT NULL COMMENT '用户Id',
`expired_at` datetime NOT NULL COMMENT '过期时间',
`created_at` datetime NOT NULL COMMENT '创建时间',
`updated_at` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_class_user_id` (`class_id`,`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb3