对于一个音视频通话,你可以使用云端录制功能,录制音视频文件。
你可以使用 StartRecord
这个 OpenAPI 实现这一功能。
你可以调用 StartRecord
接口,指示 RTC 按照你设定的配置进行录制。设置包括:单流/合流,布局模板,音视频文件参数等。
录制分为单流录制和合流录制:
GetRecordTask
接口获取录制生成的文件,强烈建议接入录制结束回调事件。请求频率:QPS 不得超过 60。
下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | StartRecord | 接口名称。当前 API 的名称为 StartRecord 。 |
Version | String | 是 | 2022-06-01 | 接口版本。当前 API 的版本为 2022-06-01 。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
AppId | String | 是 | 661e****543cf | 你的音视频应用的唯一标志,参看获取 AppId。 |
BusinessId | String | 否 | Your_****nessId | 业务标识。 你可以使用此参数进一步划分业务场景(角色/策略等)。 添加 BusinessId 后,你可以在控制台上查看根据 BusinessId 划分的质量和用量数据。 |
RoomId | String | 是 | Your_RoomId | 房间的 ID,是房间的唯一标志 |
TaskId | String | 是 | Your_TaskId | 云端录制任务 ID。你必须对每个云端录制任务设定 TaskId,且在后续进行任务更新和结束时也须使用该 TaskId。
[a-zA-Z0-9_@\-\.]{1,128} |
RecordMode | Integer | 否 | 使用此参数设定录制模式:单流/合流录制。 0 表示合流录制,1 表示单流录制。默认值为 0 。 | |
TargetStreams | Object | 否 | - | 你可以通过本参数设定需要录制的音视频流。如果参数为空,默认录制对房间内所有发布的音视频流进行录制。无论合流还是单流录制,最多 17 路流。此参数中的 stream 不得和 ExcludeStreams 中重复。 |
StreamList | Object[] | 否 | 由 Stream 组成的列表,可以为空。为空时,表示订阅房间内所有流。在一个 StreamList 中,Stream.Index 不能重复。 | |
ExcludeStreams | Object | 否 | - | 你可以通过本参数设定 不 需要录制的音视频流,即录制流的黑名单。参数默认为空。黑名单中的流不得超过 17 路。不支持将屏幕流添加到黑名单中。此参数中的 stream 不得和 TargetStreams 中重复。 |
StreamList | Object[] | 否 | 由 Stream 组成的列表,可以为空。为空时,表示订阅房间内所有流。在一个 StreamList 中,Stream.Index 不能重复。 | |
Encode | Object | 否 | - | 音视频编码参数。
|
VideoWidth | Integer | 否 | 640 | 输出画面的宽度。默认值为 640 ,范围为 [2, 1920] ,必须是偶数。值不合法时,自动调整为默认值。自定义布局下此参数不生效,整体画面宽度以 canvas 中的 Width 为主。 |
VideoHeight | Integer | 否 | 480 | 输出画面的高度,范围为 [2, 1920] ,必须是偶数,默认值为480 。值不合法时,自动调整为默认值。自定义布局下此参数不生效,整体画面高度以 canvas 中的 Height 为主。 |
VideoFps | Integer | 否 | 15 | 输出视频帧率。默认为 15 ,取值范围为 [1,60] 。值不合法时,自动调整为默认值。 |
VideoBitrate | Integer | 否 | - | 输出视频码率。取值范围 [1,10000] ,单位为 Kbps,默认值为自适应。值不合法时,自动调整为默认值。自适应码率模式下,RTC 默认不会设置超高码率。如果订阅屏幕流,建议自行设置高码率。不同场景下设置码率等视频发布参数,请参考设置视频发布参数。 |
VideoCodec | Integer | 否 | 0 | 视频编码协议。默认值为 0 ,可以取 0 或 1 。取 0 时使用 H.264 ,取 1 时使用 ByteVC1 编码器。 |
VideoGop | Integer | 否 | 4 | 输出视频 GOP。默认为 4 ,取值范围为 [1,5] ,单位为秒。值不合法时,自动调整为默认值。 |
AudioCodec | Integer | 否 | 0 | 音频编码协议。默认值为 0 ,此时使用 aac 编码协议。目前只支持 aac。值不合法时,自动调整为默认值。 |
AudioProfile | Integer | 否 | 0 | 音频配置文件类型,在使用 aac 编码时生效。取值范围为
|
AudioBitrate | Integer | 否 | - | 音频码率。取值范围为 当
当
|
AudioSampleRate | Integer | 否 | 48000 | 音频采样率。默认值 48000 ,取值为 [32000,44100,48000] ,单位是 Hz。值不合法时,自动调整为默认值。 |
AudioChannels | Integer | 否 | 2 | 音频声道数。
|
Layout | Object | 否 | - | 布局参数。仅在合流模式下支持设置布局参数。 |
LayoutMode | Integer | 否 | 0 | |
CustomLayout | Object | 否 | - | 使用自定义布局模式时,使用此参数进行具体设置。 |
MainVideoStream | Object | 否 | - | 在垂直布局模式下生效,指定主画面流的属性。垂直布局时,此参数必填。 |
Control | Object | 否 | - | 配置选项 |
MediaType | Integer | 否 | 0 | 流的类型,用于全局控制订阅的流的类型。默认值为 0 ,可以取0 和1 。0 表示音视频,1 表示纯音频,暂不支持纯视频。值不合法时,自动调整为默认值。 |
FrameInterpolationMode | Integer | 否 | 0 | 选择补帧模式。默认值为 自动布局模式下,没有补帧的逻辑。 补帧是指在音视频录制或合流转推时,视频的帧率通常是固定的。但是,因为网络波动或其他原因,实际帧率可能无法达到预设的帧率。此时,需要补帧以保持视频流畅。补最后一帧意味着补充的视频帧和中断前的最后一帧相同,此时看到的画面可能会有短暂静止;补黑帧意味着补充的视频帧是全黑的。 使用占位图、补帧和上一帧的关系: 你可以在
|
MaxIdleTime | Integer | 否 | 180 | 任务的空闲超时时间,超过此时间后,任务自动终止。单位为秒。取值范围为 [10, 86400] , 默认值为 180 。 |
MaxRecordTime | Integer | 否 | 0 | (仅对录制有效)最大录制时长,单位为秒。默认值为 0 。0 表示不限制录制时长。 |
FileFormatConfig | Object | 否 | - | 录制文件的格式设置 |
FileFormat | String[] | 否 | ["HLS"] | 存储文件格式。可取值为: MP4 、HLS 、FLV 、MP3 、 AAC 、M4A 。可同时选择多个存储文件格式,最终生成所选存储格式对应的多个文件。MP3 、AAC 和M4A 仅在编码纯音频时有效。 |
FileNameConfig | Object | 否 | - | 录制文件的命名设置。 录制文件的名称由
|
Prefix | String[] | 否 | ["directory1","directory2"] | 制定录制文件名的前缀,对
|
Pattern | String | 否 | - | 自定义录制文件名模式,具体参看自定义录制文件名。 |
StorageConfig | Object | 是 | 录制文件的存储平台。 目前支持:火山引擎视频点播 VOD 、火山引擎对象存储 TOS、Amazon S3、阿里云对象存储 OSS、华为云 OBS、腾讯云 COS 和七牛云 Kodo。 | |
Type | Integer | 否 | 0 | 存储平台类型
|
TosConfig | Object | 否 | - | 当 Type = 0 时,需正确设置 TosConfig 的值,否则请求会报错 |
VodConfig | Object | 否 | - | 当 Type = 1 时,需正确设置 VodConfig 的值,否则请求会报错 |
CustomConfig | Object | 否 | 当 Type = 2 时,需正确设置 CustomConfig 的值,否则请求会报错 | |
VeImageXConfig | Object | 否 | - | 当 Type = 3 时,需正确设置 VeImageXConfig 的值,否则请求会报错 |
本接口无特有的返回参数。公共返回参数请见返回结构。
其中返回值 Result
仅在请求成功时返回 ok
,失败时为空。
POST https://rtc.volcengineapi.com?Action=StartRecord&Version=2022-06-01 { "AppId": "You****pId", "BusinessId": "Your_****nessId", "RoomId": "Your_RoomId", "TaskId": "Your_TaskId", "RecordMode": 0, "FileFormatConfig": { "FileFormat": [ "HLS", "FLV" ] }, "FileNameConfig": { "Prefix": [ "directory1", "directory2" ], "Pattern": "" }, "StorageConfig": { "Type": 0, "TosConfig": { "AccountId": "Your_****untId", "Region": "Your_Region", "Bucket": "You****cket" } } }
{ "Result": "ok", "ResponseMetadata": { "RequestId": "Your_****estId", "Action": "StartRecord", "Version": "2022-06-01", "Service": "rtc", "Region": "cn-north-1" } }
您可访问公共错误码,获取更多错误码信息。