单流录制

最近更新时间:2022-09-20 05:17:40

功能描述

云端录制支持两种录制模式:

  • 单流录制模式:分别录制频道中每个 UID 的音频流和视频流,每个 UID 均有其对应的音频文件和视频文件。
  • 合流录制模式:频道内所有 UID 的音视频混合录制为一个音视频文件。

本文介绍如何通过设置 RESTful API 参数在单流模式下进行录制。

阅读本文前,请确保你已了解如何使用 RESTful API 进行云端录制,详见快速开始。单流或合流模式的设置必须在开始录制的时候完成,不支持在录制开始后切换模式。请参阅单流录制模式和合流录制模式的区别来决定应使用哪种模式。

为方便起见,本文假设频道内每个用户都发送音频和视频。如果有用户没有发送音频或视频(例如直播频道中的观众),一般不会生成该用户的音频或视频录制文件。

实现方法

在调用 start方法时,将 mode 参数设置为 individual,即可启用单流模式。

该模式下录制文件的音视频编码配置如下:

  • 音频编码配置:采样率固定为 48 kHz,声道数和码率与原始音频流一致。
  • 视频编码配置:与原始视频流一致。

根据录制内容的不同,录制生成的文件如下表所示:

录制内容参数设置录制生成文件
仅录制音频streamTypes 设为 0每个 UID 生成一个 M3U8 文件和多个 TS 文件,TS 文件内仅存储该 UID 的音频数据。
仅录制视频streamTypes 设为 1每个 UID 生成一个 M3U8 文件和多个 TS 文件,TS 文件内仅存储该 UID 的视频数据。
同时录制音视频(默认设置) streamTypes 设为 2每个 UID 生成两个 M3U8 文件和多个 TS 文件,TS 文件分开存储 UID 的音频数据及视频数据。

录制后共生成四个 M3U8 文件(每个 UID 对应两个 M3U8 文件)和多个 TS 文件,分开存储音视频数据。通过音视频合并转码脚本完成文件合并后,你会得到两个 MP4 文件。

如果你想直接获得 MP4 文件,在调用start方法的时候设置avFileType为 ["hls","mp4"],录制服务会在录制结束后进行排队转码生成 MP4 文件,并将 MP4 文件上传至你指定的第三方云存储(不支持七牛云)。

录制文件的命名规则详见管理录制文件

start 请求示例

  • 在单流模式下进行录制的请求 URL 为:
https://api.agrtc.cn/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/mode/individual/start
  • Content-typeapplication/json;charset=utf-8
  • AuthorizationBasic authorization,生成方法请参考 HTTP 基本认证
  • 请求包体内容:
{
    "uid": "527841",
    "cname": "httpClient463224",
    "clientRequest": {
        "token": "<token if need>",
        "recordingConfig": {
            "maxIdleTime": 30,
            "streamTypes": 2,
            "channelType": 0, 
            "videoStreamType": 1, 
            "subscribeVideoUids": ["123","456"], 
            "subscribeAudioUids": ["123","456"],
            "subscribeUidGroup": 0
        }, 
        "storageConfig": {
            "accessKey": "xxxxxxf",
            "region": 3,
            "bucket": "xxxxx",
            "secretKey": "xxxxx",
            "vendor": 2,
            "fileNamePrefix": ["directory1","directory2"]
       }
   }
}

开发注意事项

  • 单流模式下每个 UID 的音频和视频均分开录制,如需合成每个 UID 的音视频,需要通过 convert.py 脚本进行转码。详见音视频文件合并
  • 如果录制内容选择仅录制视频同时录制音视频,但是 Web 端用户没有发送视频,也会生成视频录制文件,录制黑屏。