伴音和音效

更新时间: 2022/12/12 02:28:09

NERoom SDK 支持通过混音功能播放掌声、口哨等短时音效,或者为人声添加背景音乐、伴奏音乐或其他场景效果,并将合成后的声音播放给房间内其他成员。在音视频通话或直播场景中,可以更好的烘托气氛、营造多样化语音环境。

功能概述

混音,指 SDK 从 App 获取一路音频数据,将 App 提供的音频数据与 SDK 采集的音频数据整合为一路音频数据,通常用于音乐直播、在线KTV、连麦PK、游戏直播等场景。

NERoom SDK 提供混音相关方法,实现播放短时音效和背景音乐的功能。

  • 播放短时音效:

    指通话或直播中播放短时音频文件,一般用于渲染房间气氛,例如游戏音效、掌声、口哨、欢呼声、笑声的短时音效。支持多个音效叠加播放。

  • 播放背景音乐:

    伴音功能支持在房间中播放本地或者在线音乐文件,作为通话或直播时的背景声音,同时让房间内的其他人听到此音乐。NERTC 播放伴音方法可以用来播放比较长的背景音,例如伴奏音乐、环境白噪声、背景音乐等等。

NERoom SDK 混音功能支持如下设置:

  • 混音:混音指的是音乐文件的音频流跟麦克风采集的音频流进行混音(叠加)并编码发送给对方。

  • 循环:可以设置是否循环播放混音文件,以及循环次数。

  • 音量控制:可以各自控制本地播放以及编码发送的混音音量。

  • 定位:混音任务支持从背景音乐文件的任意位置开始播放。

  • 叠加:可以同时播放多个短时音效文件。

注意事项

  • 伴音相关方法的返回值若小于 0,表示方法调用失败。

  • 请在加入房间成功后再启动混音任务。

  • 本地混音文件支持 MP3、M4A、AAC、3GP、WMA、WAV 格式,支持本地 SD 卡文件和在线 URL。

配置音效

配置步骤

  1. 调用 playEffect 方法播放指定 effectId 的音效文件。

    调用此方法时,您需要设置 effectId 指定音效文件的 ID;设置 option 参数指定播放的音效文件。option 参数的含义如下表所示。

    参数 类型 描述
    path String 待播放的音乐文件的绝对路径或 URL 地址,支持本地 SD 卡中的绝对路径或 URL 地址
    loopCount int 音效循环播放的次数。1:(默认)播放一次。≤ 0:无限循环播放
    sendEnabled boolean 是否将音效发送远端,默认为 true,即远端用户可以听到该音效。
    sendVolume int 音效文件的发送音量,取值范围为 0~200。默认为 100,表示使用文件的原始音量。
    playbackEnabled boolean 是否本地播放音效。默认为 true,即本地用户可以听到该音效。
    playbackVolume int 音乐文件的播放音量,取值范围为 0~200。默认为 100,表示使用文件的原始音量。
    startTimeStamp long 音乐文件开始播放的时间,UTC 时间戳,即从1970 年 1 月 1 日 0 点 0 分 0 秒开始到事件发生时的毫秒数。默认值为 0,表示立即播放。
    sendWithAudioType NERoomRtcAudioStreamType 伴音跟随音频主流还是辅流,默认跟随主流。
    • NERtcAudioStreamTypeMain:伴音跟随主流
    • NERtcAudioStreamTypeSub:伴音跟随辅流
  • 您可以多次调用此方法以同时播放多个音效文件,实现音效的叠加。

  • 在调用此方法成功播放指定音效文件后,若您反复停止再重新播放该 effectId 对应的音效文件,首次播放时设置的 option 无效,会恢复为默认值。

  1. 设置音效的音量。

  2. (可选)暂停和恢复音效。

  3. 在离开房间前,调用 stopAllEffects 方法停止播放所有音效文件。

示例代码

NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext != null) {
    Int result = roomContext.getRtcController().playEffect(0, NERoomCreateAudioEffectOption("effectPath", 0, true, 80, false, 80));
    if (result == 0) {
        Log.d(TAG, "播放音效成功");
    } else{
        Log.d(TAG, "播放音效失败");
    }
}

if (roomContext != null) {
    roomContext.getRtcController().setEffectSendVolume(0, 80);
}

if (roomContext != null) {
    roomContext.getRtcController().setEffectPlaybackVolume(0, 80);
}

if (roomContext != null) {
    roomContext.getRtcController().stopAllEffects();
}

API 参考

方法 功能描述
playEffect 播放指定音效文件
setEffectSendVolume 设置音效文件发送音量
setEffectPlaybackVolume 设置音效文件播放音量
stopEffect 停止播放指定音效文件
stopAllEffects 停止播放所有音效文件
pauseEffect 暂停指定音效。
resumeEffect 恢复播放指定音效。

配置伴音

配置步骤

  1. 加入房间成功后,通过 NERtcCreateAudioMixingOption 设置伴音参数,例如伴音文件路径、是否本地播放等等,并调用 startAudioMixing 开始伴音。

  2. 设置伴音的音量。

    伴音播放音量建议不超过 25,否则伴音过程中语音沟通的体验会受到影响。

  3. 在离开房间前调用 stopAudioMixing 结束伴音。

示例代码

NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
NERoomContext roomContext = roomService.getRoomContext(roomUuid);
if (roomContext != null) {
    Int result = roomContext.getRtcController().startAudioMixing(NERoomCreateAudioMixingOption("audioPath", 0, true, 80, false, 80));
    if (result == 0) {
        Log.d(TAG, "播放混音成功");
    } else{
        Log.d(TAG, "播放混音失败");
    }
}

if (roomContext != null) {
    roomContext.getRtcController().setAudioMixingSendVolume(80);
}

if (roomContext != null) {
    roomContext.getRtcController().setAudioMixingPlaybackVolume(80);
}

if (roomContext != null) {
    roomContext.getRtcController().stopAudioMixing();
}
    

API参考

方法 功能描述
startAudioMixing 开始伴音
stopAudioMixing 结束伴音
setAudioMixingPlaybackVolume 设置伴音播放音量
setAudioMixingSendVolume 设置伴音的发送音量
此文档是否对你有帮助?
有帮助
去反馈
  • 功能概述
  • 注意事项
  • 配置音效
  • 配置步骤
  • 示例代码
  • API 参考
  • 配置伴音
  • 配置步骤
  • 示例代码
  • API参考