Agora.io本地录制SDK快速入门指南
总结
现在agora.io已经发布了On-premise Recording SDK。
可以使用 On-premise Recording SDK 来录制由 agora.io 的 Video 和 Voice SDK 创建的服务(如 1 对 1 面谈、语音聊天、会议、研讨会等)的通话(视频和音频)。由于它是 On-premise(本地部署)类型,可以构建一个录制服务器(Linux),并在那里执行录制处理。
在本文中,我们将使用NodeJS示例来介绍录制服务器的建立、录制执行和视频播放流程。
(建立录制服务器环境将达到验证环境建立的程度。)
与云录制软件开发工具包(Cloud Recording SDK)的不同之处。
云录制SDK与本地录制SDK的主要区别在于是云端还是本地存储。在云录制中,录制文件保存在第三方云存储中,而本地录制则保存在建立的录制服务器上的存储设备中。
(在其他功能方面也存在一些差异)
参考资料:
· 云录制SDK
· agora.io云录制SDK快速入门指南
本地录音的操作图像
1.从左下方的每个移动设备开始进行视频通话。
2.右上方的Linux服务器(录像服务器)将执行目标视频通话的录制。
3.中央的SD-RTN将视频/音频发送到录像服务器。
4.右上方的Linux服务器(录像服务器)将保存录制文件。
構築錄影伺服器的準備(所需材料)
服务器环境 (Sā fú
Ubuntu版本号为18.04.2
请使用Windows上的Docker
声网 SDK 和录制示例源代码
・Agora本地录制软件开发工具包
・Agora基本录音样本
※使用NodeJS的示例
其他(必需品)
【在Ubuntu上安装的软件包】
·GCC
·nodejs
·npm
·ffmpeg
·其他(tar、tree、unzip、vim)
【验证用客户端】
·Agora-Web-Tutorial-1to1(验证用客户端)
※在进行操作确认时用作客户端利用。
建立录像服务器
准备和启动Linux服务器
创建和运行Docker容器以启动Linux服务器。
2. 安装 SDK 和录像示例
2-1. 解压Agora本地录制SDK。
2-2. 解压Agora基本录制示例(录制样本)。
※文件已保存在/home目录下。
$tar -xvf /home/Agora_Recording_SDK_for_Linux_v2_3_4_FULL.tar
$unzip /home/Basic-Recording-master.zip
将已解压的SDK移动到Agora基本录制示例(录制样例)的目录下。
原始位置:/home/Agora_Recording_SDK_for_Linux_FULL
目标位置:/home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/src/sdk
/home/Basic-Recording-master.
|-- On-Premise-Recording-C++
|-- On-Premise-Recording-Nodejs
|-- record
| |-- output
| |-- package-lock.json
| |-- sdkdemo.js
| `-- src
| `-- sdk //←ここ
`-- server
移动时的指令 shí de
$cp -r /home/Agora_Recording_SDK_for_Linux_FULL /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/src
$mv /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/src/Agora_Recording_SDK_for_Linux_FULL
/home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/src/sdk
3. 创建npm软件包
前往目录并转移到/sdk下。
$cd /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/src/sdk
3-2. 创建npm包
$npm install -g node-gyp
4. 录制操作源代码构建
移動至/record目錄下。
$cd /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record
4-2.进行构建和执行
$source build.sh
4-3. 检查构建是否成功
当构建成功时,将在./record目录下创建一个名为”agorasdk.node”的文件。
$ls /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record
AgoraRecordSdk.js agorasdk.node build.sh build_debug.sh output package-lock.json sdkdemo.js src
录制服务器的建设已经完成。
确认动作
那么现在我会开始录像。
1. 进行操作前的准备1(设置APPID)
将APPID设置到执行文件(sdkdemo.js)中。
1-1. 以编辑模式打开执行文件(sdkdemo.js)。
$vi /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/sdkdemo.js
在”rec.joinChannel()”函数的第四个参数(“YOUR APP ID”)中设置APPID。
(省略)
//create output folder
fs.mkdir(storageDir, {recursive: true}, err => {
//join channel
rec.joinChannel(null, "agoratest", 0, "<YOUR APP ID>", storageDir); ←ここ
})
return rec;
(省略)
保存编辑(:wq)。
2. 动作前的准备2(客户)
将Agora-Web-Tutorial-1to1(用于录制验证的客户端)保存到个人电脑上,并确保能够启动。
3. 开始录制
开始录制(“node sdkdemo.js”)。
执行后,SDK会给出反馈。
在下面的例子中,”agoratest” 频道中的 UID:”1202710079″ 加入了用于录制的用户。
$ node sdkdemo.js
setting mix layout...
joinChannel...
appliteDir /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/src/sdk/bin/
pRecording->m_agorasdk->createChannel return result:1
join channel Id: agoratest, with uid: 1202710079
channel joined agoratest 1202710079
4.客户进入房间
User 361415303 joined, RecordingDir:/home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/output/
userjoin 361415303
setting mix layout...
color: #00ff00
5. 停止录像
让每个客户离开房间。
当客户离开时,会有以下类似的回应。
leaveChannel...
在这个演示中,由于超时,录制UID将自动离开房间(在超时后),录像将停止。
setTimeout(() => {
recorder.leaveChannel();
}, 1000 * 50)
6. 确认输出文件夹
录制的文件保存在output文件夹中。
※ 这里使用空格进行分隔显示。
$cd /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record
$ls ./output
0_20200316055159530.aac agorasdk.dat metadata.txt recording_sys.log
0_20200316055200353.mp4 agorasdk.log recording2-done.txt uid_0_20200316055159535.txt
agorareport.dat cfg.json recording_0.log
7. 转码。
只有在个人模式下,才会使用转码工具(video_convert.py和ffmeg)对输出文件进行转换。
在此示例中,将以30帧每秒、640×480的分辨率进行转换。
$python /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/src/sdk/tools/video_convert.py
-f /home/Basic-Recording-master/On-Premise-Recording-Nodejs/record/output
-p 30 -r 640 480
再生-复苏
8-1. 把Linux服务器中的output文件夹传输到个人电脑上。
点击已转码的文件(0_20200316055159535_av.mp4)以开始播放。
我们成功地进行了录像服务器的搭建、录制视频的操作,并且实现了视频的播放。
填補不足之處
如果您想在Individual模式下使用NodeJS示例,则需要编辑以下代码。
/*individualモードの時*/
config.isMixingEnabled = false;
config.mixedVideoAudio = agora::linuxsdk::MIXED_AV_DEFAULT;
(mixモードの時はtrue、MIXED_AV_CODEC_V2)
修正后需要重新构建。
相关链接
・On-premise Recording和Cloud Recording有什么区别?
・请告诉我录制模式的区别。
・在On-premise Recording中,我想在录制过程中更改布局,有方法吗?