互动直播 2.0
Android
动态与公告
更新日志(V4.6)
更新日志(V5)
活动与公告
【活动】内容安全检测限时补贴活动
新手接入指南
产品简介
产品介绍
功能特性
产品优势
应用场景
基本概念
使用限制
体验 Demo
下载 SDK 和 示例代码
升级指南
快速开始
接入流程
创建应用
开通服务
集成 SDK
实现互动直播
Token 鉴权
高级 Token 鉴权
基础功能
设置音频属性
设置视频属性
设置通话音量
屏幕共享
音频共享
监测发言者音量
通话中质量监测
进阶功能
音频管理
客户端音频录制
原始音频数据
美声变声与混响
耳返
自定义音频采集与渲染
音效与伴音
设置音频订阅优先级
音频裸流传输
视频管理
视频截图
水印
云信美颜
第三方美颜
自定义视频采集
视频图像畸变矫正
虚拟背景
视频裸流传输
设备管理
视频设备管理
音频设备管理
媒体补充增强信息
旁路推流
旁路推流
旁路推流画面布局
媒体流管理
跨房间媒体流转发
媒体流加密
视频流回退
AI 融合功能
AI 超分
AI 降噪
最佳实践
音视频参数配置推荐
客户端 API
Android API 参考
错误码
服务端 API
控制台指南
常见问题处理
FAQ
错题集
服务协议

客户端音频录制

更新时间: 2022/09/28 12:00:57

NERTC SDK 在实时音视频通话过程中,支持客户端录制和服务端录制两种录制方式。其中客户端录制支持对通话过程的实时音频录制和循环缓存录制,录制文件保存在用户本地设备中,适用于通话过程录音场景及对游戏场景中对音频问题的定位和排查。

功能介绍

客户端音频录制指在通话过程中将房间内混流后的音频流录制下来,并存放在用户本地设备中以供后续回放或存档。NERTC SDK 支持通过客户端进行实时音频录制或循环缓存录制,每次录制生成一个音频文件,其中包含房间内所有用户混流后的音频数据。开启录制时可以指定录制文件的存放路径、格式和内容、录制采样率及音质、循环缓存最大时长等。

目前支持的音频格式包括:

  • WAV:文件大,音质保真度高。

  • AAC:文件小,有一定的音质损失。

注意事项

  • 文件后缀必须以 .wav.aac 结尾。

  • 加入房间后才能开始录音。

  • 客户端只能同时运行一个录音任务。正在录音时,若您重复调用音频录制接口,会结束当前录音任务,并重新开始新的录音任务。

  • 在您离开房间时,录音任务会自动停止。您也可以在通话中随时调用 stopAudioRecording 方法手动停止录音。

  • 调用原先的 startAudioRecording 方法只能进行实时音频录制,调用全新的 startAudioRecordingWithConfig 方法可以进行实时音频录制或循环缓存录制,网易云信推荐您使用新版接口,方便您自由切换录制模式;调用其中任意一个音频录制接口且未停止的情况下,调用另外一个接口会自动结束本次音频录制,并开始新的音频录制。

  • 在循环缓存录制模式下,若音频录制时长超过指定缓存时长,则最新音频数据会对原先的音频轨道进行覆盖;例如:设置缓存时长为 15 分钟,音频录制时长为 20 分钟,最终生成第 5 至 第 20 分钟的音频录制文件。

实现方法

API 调用时序

uml diagram

配置步骤

  1. 在加入房间后,调用 startAudioRecordingWithConfig 方法开启音频录制。调用此方法时,您需要设置 recordFilePathrecordSampleRate 等参数指定录音文件的配置。相关参数的含义如下。

    • recordFilePath:录音文件在本地保存的绝对路径,例如:sdcard/xxx/audio.aac。目前仅支持 WAV 或 AAC 文件格式。

    • recordSampleRate:录音采样率。该参数单位为 Hz,可以取值为 16000、32000、44100 或 48000,默认值为 32000。

    • recordQuality:录音音质。可以指定 AAC 格式的录音文件为低音质、中音质或高音质,默认为中音质。

    • recordPosition:录音对象。相关枚举值如下。

      • MIXED_RECORDING_AND_PLAYBACK(默认):录制房间内所有成员混流后的音频数据。
      • RECORDING:仅录制本地用户发布的音频流。
      • PLAYBACK:仅录制所有远端用户混流后的音频数据。
    • recordCycleTime:循环缓存的最大时长跨度。该参数单位为秒,可以取值为 0、10、60、360、900,默认值为 0,即实时写文件。

  2. 启用该方法后,SDK 会触发 onAudioRecording 回调,返回音频录制状态及录音文件保存路径。

  3. 需要结束音频录制时,调用 stopAudioRecording 方法手动停止音频录制,同时 SDK 会触发相关回调。若您离开房间前未手动停止录音,离开房间后录音进程会自动结束;若您未手动停止本次音频录制又再次调用 startAudioRecordingWithConfig 方法,本次录音文件会自动保存至本地指定路径,并开启新的录制任务。

示例代码

以实时音频录制为例,示例代码如下。

if (open) {
    File audioRecordDir = BaseActivity.this.getExternalFilesDir("audio_record");
    if (audioRecordDir == null) {
        audioRecordDir = Environment.getExternalStorageDirectory();
    }
    audioRecordDir.mkdirs();
    NERtcAudioRecordingConfiguration config = new NERtcAudioRecordingConfiguration();
    config.recordFilePath = new File(audioRecordDir, audioRecordName).getAbsolutePath();
    config.recordSampleRate = audioRecordSampleRate;
    config.recordQuality = audioRecordQuality;
    config.recordPosition = MIXED_RECORDING_AND_PLAYBACK;
    NERtcAudioRecordingConfiguration.NERtcAudioRecordingCycleTime cTime = CYCLE_TIME_0;
    config.recordCycleTime = cTime;
    ret = NERtcEx.getInstance().startAudioRecordingWithConfig(config);
} else {
    ret = NERtcEx.getInstance().stopAudioRecording();
}

API 参考

方法 功能描述
startAudioRecording 开启实时音频录制
startAudioRecordingWithConfig 开启实时音频录制或音频缓存录制
onAudioRecording 音频录制回调
stopAudioRecording 停止音频录制
此文档是否对你有帮助?
有帮助
我要吐槽
  • 功能介绍
  • 注意事项
  • 实现方法
  • API 调用时序
  • 配置步骤
  • 示例代码
  • API 参考