合流录制

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

功能描述

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

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

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

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

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

实现方法

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

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

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

录制后共生成四个 M3U8 文件和多个 TS 文件,分开存储音视频数据。通过音视频合并转码脚本进行格式转换后,你会得到两个 MP4 文件。

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

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

start 请求示例

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

开发注意事项

  • 如果录制内容选择仅录制视频或同时录制音视频,但是 Web 端用户没有发送视频,也会生成视频录制文件,录制黑屏。
  • 如果某用户中途停止发流或退出频道,该用户画面会显示为背景色。