本文介绍使用云端录制 RESTful API 进行页面录制的重点步骤。建议你同时参考云端录制 RESTful API 快速开始了解云端录制的基础流程。
云端录制共支持三种录制模式:
页面录制模式下,录制服务将指定 URL 的页面内容和音频混合录制为一个音视频文件,如下图:
你可以使用页面录制还原在线课堂、视频会议等场景的完整体验。举例来说,当一个 Web 应用集成了 Agora SDK 以及第三方白板 SDK,页面录制可以录制页面内的全部元素,而不仅限于音视频流。
你可以通过定义页面中的内容,以特定的视角进行录制。例如,如果你想以教师视角录制一个在线课堂,你可以定义某个页面包含教师端的所有操作,并录制该页面。
页面录制需满足以下前提条件:
在开始录制前,必须调用 acquire
方法请求一个用于云端录制的 resource ID。你需要将 scene
参数设置为 1
,即分配页面录制资源。
请求 URL:
https://api.agora.io/v1/apps/<yourappid>/cloud_recording/acquire
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。
请求包体内容:
{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest":{
"resourceExpiredHour": 24,
"scene": 1
}
}
在调用 start
方法时,将 mode
参数设置为 web
,启用页面录制模式。该模式下,你还需要通过 extensionServiceConfig
设置页面录制的详细信息,以及通过 storageConfig
设置第三方云存储的信息。
页面录制支持的 clientRequest
参数包括:
参数 | 配置内容 | 是否选填 |
---|---|---|
recordingFileConfig |
录制文件 | 选填 |
storageConfig |
第三方云存储 | 必填 |
extensionServiceConfig |
页面录制 | 必填 |
请求示例
请求 URL:
https://api.agora.io/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/mode/web/start
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。
请求包体内容:
{
"cname":"httpClient463224",
"uid":"527841",
"clientRequest":{
"token": "<token if any>",
"extensionServiceConfig": {
"errorHandlePolicy": "error_abort",
"extensionServices":[{
"serviceName":"web_recorder_service",
"errorHandlePolicy": "error_abort",
"serviceParam": {
"url": "https://xxxxx",
"audioProfile":0,
"videoWidth":1280,
"videoHeight":720,
"maxRecordingHour":72
}
}]
},
"recordingFileConfig":{
"avFileType":[
"hls",
"mp4"
]
},
"storageConfig":{
"vendor":2,
"region":3,
"bucket":"xxxxx",
"accessKey":"xxxxx",
"secretKey":"xxxxx",
"fileNamePrefix":[
"directory1",
"directory2"
]
}
}
}
录制后共生成一个 M3U8 文件和多个 TS 文件。根据 avFileType
参数的设置,还有可能生成一个或多个 MP4 文件。录制文件的命名规则详见管理录制文件。
update
和 updateLayout
方法。start
方法中填入的 URL 无法正常打开,录制服务会在 start
成功后自动退出。你可以参考云端录制集成最佳实践,使用退避策略多次调用 query
,来确认录制服务正常启动。start
方法中填入的 URL 会自动触发客户端发布音视频流,录制服务器所启动的浏览器引擎也会成为一个发流端,因此你的应用中可能会出现一个无视频内容的用户画面。