2022「录制服务」常见FAQ

Q1:Agora提供哪几种录制的方式?

1、成功获取 AgoraMediaRecorder 对象后,在加入频道后调用startRecording开启本地音视频流录制。

参考: https://docs.agora.io/cn/live-streaming-premium-4.x/API%20Reference/java_ng/API/class_imediarecorder.html?platform=Android#api_imediarecorder_startrecording

2、调用restful API对推流内容进行自定义规则的录制参考: https://docs.agora.io/cn/fusion-cdn-streaming/rest-api-recording-fls?platform=RESTful

3、在 Linux 服务器上部署Agora 本地服务端录制 SDK 实现音视频录制参考: https://docs.agora.io/cn/Recording/landing-page?platform=Linux

4、通过调用RESTful API进行云端录制参考: https://docs.agora.io/cn/cloud-recording/product_cloud_recording?platform=RESTful


Q2:录制文件储存在哪里?

对于本地服务端录制,录制文件会储存在你自己的 Linux 服务器上,详见管理录制文件: https://docs.agora.io/cn/Recording/recording_manage_files?platform=Linux

对于云端录制,Agora 会把录制内容切片为多个 TS 文件并不断上传至你预先设定的第三方云存储,详见管理录制文件。


Q3:云端录制如何处理服务器断网、进程被杀问题?

官网参考: https://docs.agora.io/cn/cloud-recording/faq/high-availability


Q4:为什么成功开启云端录制后调用 query /stop方法返回 404?

通过 start 方法成功开启云端录制后,调用 query 方法返回 404 状态码,可能原因如下:云端录制启动后,录制服务会进行参数检查,如果检查出现问题,则有可能导致录制停止。

请检查 transcoding 等参数设置是否正确。你可以参考如何设置录制视频的分辨率设置 transcoding。

第三方云存储信息有误,如 accessKey 或 secretKey 错误,导致录制文件上传失败。

如果你开通了 Agora 消息通知服务,当你的云存储配置出错时,你会收到 cloud_recording_error 事件的通知。

clientRequest 中的 token 有误,导致云端录制无法加入频道。请确认你的项目是否已启用 App 证书。如果你的项目已启用 App 证书,则务必在该参数中传入你项目的动态秘钥;如果未启用,则无需设置该参数。详见校验用户权限。

云端录制启动后,频道内没有用户发流,当超过 maxIdleTime 即最长空闲频道时间后,云录制会自动退出。云端录制服务器断网或进程被杀。此时,调用 query、updateLayout、或 stop 均会返回 404。

云端录制的故障处理中心会在 90 秒内判断故障原因,并采取相应的应对措施。你可以在一段时间后再次调用 query 方法,查询录制服务是否已恢复。详情见云端录制服务器断网、进程被杀的处理。


Q5:如何设置本地服务端录制/云端录制的输出视频属性?

设置输出视频属性: https://docs.agora.io/cn/cloud-recording/recording_video_profile?platform=RESTful#profile_table


Q6:云端录制如何计费?

参考: https://docs.agora.io/cn/cloud-recording/billing_cloud_recording?platform=RESTful

⚠️注意:录制的计费与录制模式无关。无论你采用单流录制模式还是合流录制模式,录制的计费仅与录制流数、录制时间以及录制集合分辨率相关。


Q7:消息通知服务和 query 方法有什么区别?

云端录制 query 方法你可以定时调用云端录制的 query 方法,查询云端录制的状态。详见查询云端录制状态的 API。

优点:录制服务状态为主动查询后获得,可靠性高。

缺点:提供的状态信息有限。需要主动查询,且有每秒请求数(QPS)限制,实时性不如消息通知服务。

如果你对状态查询的可靠性要求较高,Agora 强烈建议你使用 query 方法。

消息通知服务Agora 消息通知服务用于辅助监听云端录制的事件。你需要配置一个 HTTP/HTTPS 服务器来接收事件通知。详见云端录制 RESTful API 回调服务 :https://docs.agora.io/cn/cloud-recording/cloud_recording_callback_rest

优点:实时性好。

缺点:服务器被动接收消息,可能会出现消息丢失的情况。因为消息投递的确认消息可能会丢失,导致消息重传,需要对消息进行去重。不保证消息有序到达。消息通知服务只能作为辅助手段来监控录制状态。不建议你的核心业务逻辑依赖消息通知服务。

如果你的业务对该服务强依赖,建议联系 sales@agora.io 开通冗余消息功能,即接收双路消息通知,降低消息丢失的概率。冗余消息功能仍然不能保证 100% 的消息到达率。

官网链接: https://docs.agora.io/cn/All/faq/ncs_vs_query


Q8:为什么本地服务端录制录制状态出现异常?

参考: https://docs.agora.io/cn/Recording/faq/record_status_error


Q9:本地服务端录制生成的文件支持哪些播放器?

官网参考: https://docs.agora.io/cn/Recording/faq/recording_player


Q10:为什么无法通过浏览器调用云端录制 RESTful API?

要使用云端录制 RESTful API,Web API 需要发送跨域请求。根据 CORS 规范,浏览器针对跨域请求会先发送一个 OPTIONS 请求,查询服务器是否允许跨域请求,然后才有可能发起真正的 POST 请求。但是由于云端录制 RESTful API 不支持 OPTIONS 方法,所以无法支持 Web API 调用的方式。

官网链接: https://docs.agora.io/cn/All/faq/call_api_in_browser


Q11:如何选择云存储 bucket 区域及处理跨区上传问题?

目前云端录制支持以下云存储厂商:

七牛云

Amazon S3

阿里云

腾讯云

发起云端录制前,请先确保你已经开通了以上厂商中至少一家的云存储服务,并且创建了 bucket。然后,在开始云端录制的 API 请求中把云存储的相关信息填入 storageConfig 参数。

其中,关于 bucket 的 region 选择,建议选择距离发起云端录制请求的服务器较近的区域。具体的厂商区域对照表见云端录制 RESTful API.

跨区上传可能产生的问题目前云端录制的实际待上传文件都位于距离发起云端录制请求的服务器较近的机器上,所以如果云存储出现跨区的现象,例如发起云端录制请求的服务器在美国,选择的 bucket 的区域在北京,就会出现上传较慢甚至上传失败的情况。

虽然 Agora 备份云可以备份一部分上传失败的文件,但由于云端录制在录制结束后只会等待一定的时间,如果超时还没有完成全部的上传,就会结束任务并最终导致丢失录制文件,因此跨区上传会严重影响上传时延和上传结果。

官网链接: https://docs.agora.io/cn/All/faq/bucket_region


Q12:云端录制 RESTful API 使用过程中出现报错怎么处理?

云端录制错误码和状态码: https://docs.agora.io/cn/cloud-recording/common_errors?platform=RESTful


Q13:云端录制有哪几种模式?

支持三种录制模式:

合流录制模式:频道内所有或指定 UID 的音视频混合录制为一个音视频文件, https://docs.agora.io/cn/cloud-recording/cloud_recording_composite_mode?platform=All%20Platforms

单流录制模式:分开录制频道内每个 UID 的音频流和视频流,每个 UID 均有其对应的音频文件和视频文件, https://docs.agora.io/cn/cloud-recording/cloud_recording_individual_mode?platform=All%20Platforms

页面录制模式:指定网页的页面内容和音频混合录制为一个音视频文件, https://docs.agora.io/cn/cloud-recording/cloud_recording_webpage_mode?platform=All%20Platforms


Q14:如何管理录制生成的文件?

官网参考: https://docs.agora.io/cn/cloud-recording/cloud_recording_manage_files


Q15:云端录制有哪些进阶功能?

1、端录制支持对频道内的视频流进行截图,并将图片上传至你的第三方云存储。

视频截图: https://docs.agora.io/cn/cloud-recording/cloud_recording_screen_capture?platform=RESTful

2、使用 Agora 实时音视频服务时,你可以使用第三方智能语音审核对音频内容进行多样化场景检测,帮助你对内容进行管控,规避内容违规风险。

智能语音审核: https://docs.agora.io/cn/cloud-recording/audio_inspect_restful?platform=RESTful

3、不少教育应用需要将录制的视频与其他数据流文件(白板、课件、课堂聊天记录等)同步回放,从而还原真实通话场景。你可以通过云端录制提供的录制开始时的时间戳,将录制的视频与其他数据流文件同步回放。

同步回放: https://docs.agora.io/cn/cloud-recording/cloud_recording_playback?platform=RESTful


Q16:如何在线播放录制文件?

参考: https://docs.agora.io/cn/cloud-recording/cloud_recording_onlineplay?platform=RESTful


Q17:本地服务端录制如何计费?

参考: https://docs.agora.io/cn/Recording/billing_recording?platform=Linux