近来使用声网的云端录制功能中的页面录制,来实现用户视角的课程回放视频录制。由于是声网刚新出的功能,文档不是很详细,所以踩了一些坑。在此记录一二。

注:声网页面录制文档地址:https://docs.agora.io/cn/cloud-recording/cloud_recording_webpage_mode?platform=RESTful

由于功能是新上的,所以文档不太完善,因此还需要参考:https://docs.agora.io/cn/cloud-recording/cloud_recording_api_rest?platform=RESTful


目前还处于公测期。公测期期间,可以免费使用。

使用前,要确保开通了云端录制功能,且要将声网APPID、录制功能所需的key 、secret记下来。还要注意的是,声网录制开始时间和结束时间,都是由我们自己控制的

(当请求start接口时,就开始录制了,当请求stop接口时,就停止录制了。)

1.接口请求header信息需要增加:Authorization

或者直接在headers 中加入

2.请求acquire

3.请求start

4.请求stop

请求三个接口即可完成录制(以下代码只是简单示例---只提供大致代码,重点注解。)。

    /** 简单示例(只提供大致代码,重点注解。并不完全):开始录制* @param $data* @return bool*/public function start($data){//请求声网接口开始录制$data['prefix'] = empty($data['prefix']) ? 'test' : $data['prefix']; //文件名前缀$data['hour'] = empty($data['hour']) ? 72 : $data['hour']; //设置云端录制 RESTful API 的调用时效//录制视频设置$data['fps'] = empty($data['fps']) ? 15 : $data['fps'];$data['width'] = empty($data['width']) ? 960 : $data['width'];$data['height'] = empty($data['height']) ? 720 : $data['height'];//存储设置$data['file_path'] = empty($data['file_path']) ? 'agoraRecordVideo' : $data['file_path']; //路径$baseStartUrl = $this->option['RestUrl'] . $this->option['AppID'] . '/cloud_recording/resourceid/';$base64Credentials = base64_encode($this->option['Key'] . ':' . $this->option['Secret']);// 请求头$header = ['Authorization' => 'Basic ' . $base64Credentials,'Content-type' => 'application/json;charset=utf-8'];$cname = $data['prefix'] . '-' . 'name';$uid = (string) 1 //此处uid需要保持唯一性;$acquireData = ['rest_url' => $this->option['RestUrl'],'app_id' => $this->option['AppID'],'base64_credentials' => $base64Credentials,'hour' => $data['hour'],'cname' => $cname,'uid' => $uid];$acquireRes = self::getAgoraResourceId($acquireData);if (!$acquireRes['resourceId']) {Log::error(['message' => '声网返回resourceId错误', 'agora' => $acquireRes], 'startAgoraRecordVideo');$this->addError('获取声网录resourceId错误,录制失败');return false;}$startUrl = $baseStartUrl . $acquireRes['resourceId'] . '/mode/web/start';$url = 'www.baidu.com' //你需要录制的页面地址;$startData = ['cname' => $cname,'uid' => $uid,'clientRequest' => ['token' => '','extensionServiceConfig' => ['errorHandlePolicy' => 'error_abort','extensionServices' => [['serviceName' => 'web_recorder_service','errorHandlePolicy' => 'error_abort','serviceParam' => ['url' => $url,'videoFps' => $data['fps'], //帧率'audioProfile' => 1, //48 kHz 采样率,音乐编码,单声道,编码码率约 128 Kbps'videoWidth' => $data['width'],'videoHeight' => $data['height'],'maxRecordingHour' => $data['hour'], //最大录制时长]]]],'recordingConfig' => ['maxIdleTime' => 86400  //不设置的话默认为30s:即推流中断30s,就会停止录制,建议设置此项],'recordingFileConfig' => ['avFileType' => ['mp4', 'hls']],'storageConfig' => [   //此处为第三方存储,可以设置其他存储'vendor' => 0, //七牛云'region' => 2, //华南'bucket' => '', //七牛云bucket'accessKey' => '',//七牛云accessKey'secretKey' => '',//七牛云secretKey'fileNamePrefix' => [$data['file_path']]]],];$startRes = HttpRequest::post($startUrl, $startData, $header);//成功,更新状态为开始录制  失败不更新if ($startRes['sid']) {$record= ['file_path' => $data['file_path'],'cname' => $cname,'uid' => $uid,'sid' => $startRes['sid'],'resource_id' => $startRes['resourceId']];/*****************以上数据应记录,以供后用******************/记录代码省略....} else {Log::error(['message' => '声网返回sid错误', 'agora' => $startRes], 'startAgoraRecordVideo');$this->addError('声网返回sid错误,录制失败');return false;}return true;}/** 简单示例(只提供大致代码,重点注解。并不完全)停止录制* @param $data* @return bool*/public function stop($data){$record //record 为开始录制后记录下的数据$stopUrl = $this->option['RestUrl'] . $this->option['AppID'] . '/cloud_recording/resourceid/' . $record['resource_id'] . '/sid/' . $record['sid'] . '/mode/web/stop';$base64Credentials = base64_encode($this->option['Key'] . ':' . $this->option['Secret']);// 请求头$header = ['Authorization' => 'Basic ' . $base64Credentials,'Content-type' => 'application/json;charset=utf-8'];$stopData = ['cname' => $record['cname'],'uid' => $record['uid'],'clientRequest' => (object)null  //此处需传空对象];$qiniuUrl = Yii::$app->params['qiniu']['host']; //文件存储地址host$stopRes = HttpRequest::post($stopUrl, $stopData, $header);if (!empty($stopRes['serverResponse']['extensionServiceState'])) {$name = $stopRes['serverResponse']['extensionServiceState'][1]['payload']['fileList'][1]['filename'];$record = ['file_url' => $qiniuUrl . $record['file_path'] . '/' . $name,];/***************得到录制文件地址****************/} else {Log::error(['message' => '声网停止录制文件错误', 'agora' => $stopRes], 'stopAgoraRecordVideo');}return true;}/*** 声网acquire接口获取resourceId* @param $data* @return bool|mixed|string*/public static function getAgoraResourceId($data){$acquireUrl = $data['rest_url'] . $data['app_id'] . '/cloud_recording/acquire';// 请求头$header = ['Authorization' => 'Basic ' . $data['base64_credentials'],'Content-type' => 'application/json;charset=utf-8'];$acquireData = ['cname' => $data['cname'],//区分录制进程'uid' => $data['uid'],'clientRequest' => ['resourceExpiredHour' => $data['hour'],'scene' => 1]];$acquireRes = HttpRequest::post($acquireUrl, $acquireData, $header);return $acquireRes;}

声网(agora)云端录制(页面录制)实践总结相关推荐

  1. 声网 Agora 本地服务端录制 SDK v3.0 版正式上线

    声网 Agora 本地服务端录制 SDK v3.0 版已经上线,并更新至声网官网「SDK和应用下载」. 新增特性 1. 支持录制以 H.265/HEVC 标准编码的视频流 v3.0 起支持录制以 H. ...

  2. 声网Agora 云端录制服务上线,30 分钟即可快速集成

    录制在很多实时音视频场景中都是必备功能,比如在线教育.金融双录.社交直播等.然而,对于很多不熟悉录制服务原理的人来讲,如果选错了录制服务,会遇到很多问题,例如录制文件丢失.维护与升级成本高等. 录制服 ...

  3. 声网 Agora 的 2019

    50+新增数据中心 300%全网带宽容量上涨 中国区支持百万大频道动态扩展能力 海外大频道扩容时间缩短50% 日分钟数超过6亿 支持 5G 网络下高清.大码率视频传输 移动端超分.感知视频编码.AI ...

  4. 在办公室装警报、参加杨超越编程大赛——“开发者之友”声网Agora团队是怎样炼成的?...

    声网Agora(以下简称「声网」)是全球首个也是最大的实时互动技术服务平台,根据2018年10月公开的数据,其全球开发者数量超过20万,连接20亿的终端用户.通过全球200多个数据节点的SD-RTN™ ...

  5. 声网Agora上市,只是云通信产业技术与商业爆发的前夜

    中国软件网 出品 作者 赵满满 摘要: 一家340亿美元的企业上市需要7年,一个产业的成熟需要一个难逢的契机.一场新冠肺炎,让全球企业加速上云进程,那么这场爆发过后,云通信产业又会迎来怎样的新格局?我 ...

  6. 声网Agora发布教育信息化解决方案 助力教育公平提效

    4月23日-25日,由中国教育装备行业协会主办的第79届教育装备展在厦门国际会展中心举办.作为赋能教育信息化的实时互动PaaS服务商,声网Agora应邀参会.展会现场,声网展示了基于实时音视频互动能力 ...

  7. 【产业互联网周报】容联云下周纽交所挂牌;声网Agora因Clubhouse股价周内涨超30%;贝索斯将卸任亚马逊CEO...

    关注ITValue,看企业级最新鲜.最价值报道! [产业互联网周报是由钛媒体TMTpost发布的特色产品,将整合本周最重要的企业级服务.云计算.大数据领域的前沿趋势.重磅政策及行研报告.] 本周(2月 ...

  8. 【产业互联网周报】奇安信科创板IPO过会;声网Agora登陆纳斯达克;国产光刻机双工件台供应商华卓精科科创板IPO获受理...

     关注ITValue,看企业级最新鲜.最价值报道! 图片来源@视觉中国 | [产业互联网周报是由钛媒体TMTpost发布的特色产品,将整合本周最重要的企业级服务.云计算.大数据领域的前沿趋势.重磅政策 ...

  9. 声网Agora Native SDK 2.9.3 发布

    新年伊始,开工大吉! 声网 Agora Native SDK 2.9.3 现在已经正式发布,并已更新至官网开发者中心的「SDK和应用下载」页面.新版本面向Android.iOS.macOS.Windo ...

  10. 声网 Agora Share:从天到秒级效率提升,一切都为服务好 15 万+应用

    如今,实时音视频互动已成为生活中无处不在的场景,特别是疫情带来的"生活场景线上化",使亿万用户涌到线上,为线上应用带来了巨大流量.当实时音视频变成主流互动方式, 这项服务不仅仅是满 ...

最新文章

  1. 曾捡破烂为生,穷到没饭吃,现在身家395亿,给员工发3亿年终奖!
  2. 夺命雷公狗---微信开发57----微网站之jquery_mobile之入门案例
  3. python安装包-安装 Python 模块
  4. json2.js的初步学习与了解(转)
  5. 径向基函数插值(3)二维数据的插值
  6. RedHat Enterprise Linux6.4 使用CentOS yum源
  7. 吴恩达深度学习笔记8-Course3-Week1【机器学习策略(ML Strategy)1】
  8. Java基础---“方法”题目练习
  9. 专访 YYKit 作者 ibireme: 开源大牛是怎样炼成的
  10. c语言函数实现顺序线性表,数据结构C语言实现——顺序线性表SqList
  11. Java中4大基本加密算法解析
  12. 全国表彰|达观数据创始人陈运文博士荣获第十一届“中国青年创业奖”,是上海唯一获奖者
  13. 【微信小程序】协同工作与发布
  14. pip 切换清华镜像源
  15. 送给自己的生日礼物:突破自己(辞职南下)
  16. CSS: Animation CSS:动画 Lynda课程中文字幕
  17. 基于JAVA电子设备销售网站计算机毕业设计源码+系统+lw文档+部署
  18. 工业互联网大数据中心使用 KubeEdge 实践
  19. 达观智能文本分析系统,赋能企业大数据加工处理
  20. 各版本Linux安装软件

热门文章

  1. 【NOIP2017提高组正式赛】列队
  2. 使用报表工具自定义属于自己的报表
  3. Ethereum技术架构介绍
  4. 迅雷链流量扶持放大招:手雷链克专区上线!
  5. Objective-C学习篇08—NSDictionary与NSSet
  6. 为React应用添加国际化支持
  7. Python数据采集案例(1):微博热搜榜采集
  8. Win10任务管理器不显示GPU的解决方法
  9. 2018最新Go语言实战抽奖系统
  10. Android - weight,patch图片,shape图形,android开发入门书籍推荐