云端录制

本文为您介绍如何实现云端录制能力。

功能介绍

实时音视频(ARTC)的云端录制功能通过录制任务触发,支持多种录制模式。您可以选择将频道中每个用户的音视频流分别录制,形成多个独立文件(单流录制),也可以将频道内所有参与者的音视频内容合并进行统一录制(混流录制)。

使用场景

AI实时互动、语聊房、1v1陌生人社交、连麦互动等场景下,出于回放、审核、调研、评估与存档等需求会存在录制存储的需要,因此实时音视频(ARTC)推出了云端录制功能用于贴合用户需求。

注意事项

  • 云端录制属于通用能力,不需要开通即可使用。

  • 云端录制属于收费功能,费用详情请参见云端录制费用

录制任务生命周期

image
说明
  • 当任务处于正常运行或异常运行状态中时,若超过最大生命周期(72小时)则任务会自动停止。

  • 任务已停止状态下会触发停止回调,以该回调状态为准,当收到回调信息时,可查询全部录制文件。

  • 空闲超时时间,当任务处于空闲状态的时长超过MaxIdleTime时,自动停止任务。单位为秒,范围须在[10,14400]内,即最大4小时。(默认为300秒)

    • 对于混流录制模式,当所有订阅的用户流都停止推流时算作空闲。

    • 对于单流录制模式,订阅的流之间彼此独立,任意一路流停止推流都算作空闲,达到MaxIdleTime后会停止该路流的录制,当所有订阅流都空闲超时后,会停止整个云端录制任务。

功能说明

录制模式

  • 单流录制:对实时音视频频道内每个UID所对应的音频流与视频流逐一录制并生成与UID对应的音频和视频文件。

    • 录制文件的音频和视频配置参数默认沿用源流参数。

    • 音频OPUS编码格式会自动转化为AAC格式。

    说明

    若发生断流,则会补充静音的音频帧,视频帧会根据播放器的不同补充最后一帧或黑帧。

    • 若订阅的是音视频,那么后续只会生成M3U8文件,不会再生成MP4MP3文件。

    • 若订阅的是纯音频,那么后续仍然会生成M3U8文件和MP3文件,但不会再生成MP4文件。

  • 混流录制:将实时音视频频道内多个UID所对应的音视频混合录制为一个音视频文件。

    • 用户可根据需要设置录制文件的音视频属性,包括编码格式、码率和帧率等。

    • 用户还可以自定义设置混流布局(UserPanes),及屏幕(画布)的背景图(MixBackground)。

    说明
    • 当前只支持自定义布局,最多支持17路,支持从订阅的用户流中选择需要的音频或视频流参与布局。

    • 混流录制场景下,若发生断流,显示策略如下:

      • 禁用视频、取消发布或退出频道:会直接显示子画面背景图(SubBackground),若未配置子画面背景图,则对应窗口显示黑色背景。

订阅

实时音视频(ARTC)通过在用户列表(SubscribeUserIdList)中订阅用户(UserId)触发录制任务,需要订阅用户的UserId可通过此接口查询DescribeChannelUsers - 查询频道内在线用户列表

订阅输入

  • 订阅指定频道中的用户。

  • 订阅视频流来源类型(SorceType)(摄像头/屏幕共享)。

  • 订阅媒体流类型选择(StreamType)。

说明
  • 每个订阅用户列表SubscribeUserIdList中可添加多个相同UserId,即同一个UserId下可配置不同的视频流来源(屏幕流&摄像头流等)。

  • 启动一个录制任务,系统会作为虚拟用户加入频道并订阅需要录制的音视频流,这部分订阅费用会正常按ARTC通话费用收取。

录制处理

单文件限制

按用户指定时长生成文件。

  • 时长:录制文件取值范围须在[180,7200](秒)内,即最大时长2小时,若不指定则默认2小时。

断流拼接

当订阅不到音频和视频数据时,若在指定时间内再次推流,录制内容自动合并成一个录制文件,不生成新切片。

断流补帧

  • 纯音频场景下断流,补静音帧。

  • 音视频场景下断流,支持选择补帧类型包括。

    • 最后一帧,重复显示视频流中断前的最后一幅画面。

    说明

    混流场景下,若设置子画面背景图(SubBackground),则优先显示背景图。

录制文件命名

文件命名规则

  • 自定义文件名,用户可以基于以下可选变量拼接文件名:

    变量名

    描述

    AppId

    应用ID。

    ChannelId

    频道ID。

    UserId

    用户ID。

    RecordMode

    录制模式。

    当值为0时,对应单流录制(Single)。

    当值为1时,对应混流录制(Mix)。

    StreamType

    流类型:A表示纯音频,V表示纯视频,AV表示音视频。

    SourceType

    视频输入类型:C表示摄像头,S表示屏幕共享。

    StartTime

    开始录制的 UTC 时间,单位为毫秒。

    Sequence

    HLS切片索引,其他格式下无效。

  • 默认文件名规则:

    • 单流录制:

      • HLS格式:{AppId}_{ChannelId}_{UserId}_{StartTime}_{Sequence}

      • 其他格式:{AppId}_{ChannelId}_{UserId}_{StartTime}

    • 混流录制:

      • HLS格式:{AppId}_{ChannelId}_{StartTime}_{Sequence}

      • 其他格式:{AppId}_{ChannelId}_{StartTime}

    说明
    • 字段参数含义说明参考自定义文件名变量参考表

    • 若同时订阅了同一个UserId的不同StreamType或不同SourceType则在默认命名规则中的{UserId}后补充{SourceType}

说明

当文件命名为***后,文件最终会保存为类似TaskId/***.M3U8的形式,其中TaskId是在启动云端录制任务时生成的任务id,会由系统自动添加到存储路径中。

录制文件存储

存储格式

  • 纯音频:支持 MP3、AAC等格式。

  • 音视频:支持HLS、MP4等格式。

    说明
    • 当不设置生成文件格式时,系统会默认生成HLS格式文件。

    • 当手动设置文件格式后,若所设置的格式中未包含HLS格式,则系统会自动生成一份HLS格式文件。

    • 当生成多个格式文件时,会根据不同格式文件的数量进行计费。

存储到OSS

前置条件

若采用录制存储至OSS方式进行直播录制功能配置,需要完成以下操作:

  1. 开通OSS服务并创建Bucket:具体操作请参见创建存储空间

    重要
    • 录制文件存储在OSS中,会产生存储费用,在OSS中计费请参见存储费用

    • 云端录制存储至OSS所需Bucket的地域与调用接口时使用的接入点地域必须一致。例如,选择cn-shanghai接入点时,Bucket必须也是cn-shanghai地域的。

  2. 配置直播写入OSS的权限:正常情况下,开通直播服务时,您已完成自动授权。

    重要

    如果该权限意外被删除可点击同意云资源访问授权完成快速授权。

    建议您使用阿里云账号完成授权,若使用RAM用户必须拥有以下权限:ram:CreateRoleram:GetRoleram:ListPoliciesForRoleram:AttachPolicyToRole,授予RAM用户以上权限存在安全风险(不推荐)。

功能使用

录制结束后,系统会将录制文件根据接口参数配置项存储至OSS存储平台中所配置的Bucket中,用户可通过访问OSS控制台获取相关录制文件。

  • 通过接口开启录制,需要在存储参数中配置对应的Bucket名称与Endpoint名称。

  • 目前仅支持存储到上海区域的OSS,请采用上海区域的Endpoint。

存储到VOD

前置条件

若采用录制存储至VOD方式进行直播录制功能配置,需要开通视频点播服务,并进行配置管理存储Bucket

重要
  • 录制文件存储在视频点播VOD中,会产生存储费用,在VOD中计费请参见点播基础服务计费

  • 在启用点播系统Bucket时,需要注意点播系统Bucket需要与调用接口时使用的接入点地域一致。

功能使用

录制过程中,系统会将录制文件根据接口参数配置项上传至VOD平台,并按照转码模板配置进行转码,用户可通过访问VOD控制台获取相关录制文件。

  • 通过接口开启录制,需要在存储参数中配置对应的StorageLocation。

功能使用

阿里云实时音视频(ARTC)云端录制功能通过录制任务(Task)控制,用户可通过接口控制任务的启动与停止,以此来实现完整的云端录制功能。

  • 当用户手动触发录制任务时,即通过启动Rtc云端录制任务接口创建录制任务,必须确保频道存在,录制任务才能创建成功。

  • 当需要生成录制文件时,需要确保频道中存在直播流。

启动录制

用户可调用启动Rtc云端录制任务接口来启动云端录制功能。

订阅(SubscribeParams)

维护了一个订阅的UserId信息列表,单流录制模式下,会对其中每个UserId分别进行录制;混流录制模式下,将所有UserId的音视频混合到一组音视频中。

  • 最多支持17UserId。

录制(RecordParams)

录制详细参数配置,主要有两种录制模式即:

  • RecordMode取值为0的单流录制模式,对于订阅的每个UserId,各自生成录制文件。

  • RecordMode取值为1的混流录制模式,对于订阅的UserId,将这些用户的流进行混合转码后,仅生成一组录制文件,通过MixLayoutParams参数调整布局。

存储(StorageParams)

  • 通过StorageType参数指定存储方式,当前支持OSSVOD两种方式。

  • 通过FileInfo参数配置文件存储信息,包括录制文件的格式、存储位置和命名等(仅OSS方式下有效)。

转码(MixTranscodeParams)

混流模式下,用户可以通过设置编码参数来控制所录制的视频文件的质量,单流录制模式下不填。

  • 可设置包括音频的码率(AudioBitrate)、声道数(AudioChannels)、采样率(AudioSampleRate)等参数。

  • 可设置视频的编码格式(VideoCodec)、码率(VideoBitrate)、帧率(VideoFramerate)、视频的宽度(VideoHeight)与高度(VideoWidth)等参数。

布局(MixLayoutParams)

  • 混流模式下,用户可通过此参数配置录制视频的背景图(MixBackground)与布局信息(UserPanes),混流模式且录制非纯音频文件时必填。

  • 云端录制目前仅支持自定义布局配置,即通过配置窗格高度(Height)、窗格宽度(Width)、坐标X(X)、坐标Y(Y)与叠放顺序(ZOrder)等参数自定义各个视频流的布局。

回调(NotifyUrl)

用户可通过此参数配置接收回调消息的地址,任务状态消息会推送到该地址。此外,可以通过设置NotifyAuthKey参数实现回调鉴权,回调详细信息请参见云端录制回调信息说明

停止录制

用户可调用停止Rtc云端录制任务接口在录制任务结束后,停止录制。

说明

当触发停止录制操作,系统会等待所有的录制文件上传完成后发送一个停止录制的回调信息,只有当接收到该回调信息后,才能确认录制过程真正结束。

更新录制

用户可调用更新Rtc云端录制任务接口修改云端录制服务的参数,如背景图,混流录制布局。

说明
  • 对于单流模式,只能更新订阅信息。

  • 对于混流模式,可以更新订阅信息与布局信息。

  • 更新完成后,更新的内容即可生效,无需重启。

查询录制

用户可调用查询Rtc云端录制文件及任务状态接口来查询云端录制中录制任务的状态与录制文件信息等。

说明
  • 仅当录制任务存在时可以正常查询到具体信息,若查询任务不存在则无法查询到信息,接口会返回错误码。

  • 当任务成功进入到运行状态且距离任务创建时间未达到72小时的情况下,可正常获取到录制文件信息,超过72小时后会返回错误码。