音效
更新时间: 2024/08/23 10:24:52
本章节介绍音效相关的功能,通过阅读本章节你可以快速了解音效功能的调用方法和流程。音效是指在音视频通话和互动直播过程中,将本地的音效文件(例如: 鼓掌、笑声...)与本端采集的声音数据混音后发送出去,同时在本端播放出来的功能。
音效功能可以处理系统原生支持语音播放的音频文件类型,如 aac
、mp3
、mp4
和 wav
等。单个文件时长不能超过10 s , 最多同时播放5个音效文件。
该功能支持预加载、设置文件播放次数、发送音量和播放音量,支持通话中预加载、开始、停止。
预加载音效
- API介绍
在播放音效之前,一定要预加载音效。加载时指定一个音效id 及文件路径 。音效加载完成之后有回调,参考 下文的 事件回调 。 注意:路径填null 表示卸载音效或者取消加载任务
- API原型
java /**
* 预加载或卸载 音效文件(播放音效前的必要操作)
*
* @param effectId 音效id ,用户自定义 , 重复加载同一个id ,会先停止播放并卸载。
* @param audioFilePath 音效文件路径,如果传 null ,表示卸载相应的音效或者取消加载任务 。
* 在播放过程中卸载会停止播放并触发播放结束的回调。
* 预加载的结果在{@link AVChatStateObserver#onAudioEffectPreload(int, int) }中回调。
* 如果需要,用户可以自己记录id 与 file 之间的对应关系。
*/
public abstract void preloadAudioEffect(int effectId, String audioFilePath);
- 参数说明
参数 | 说明 |
---|---|
effectId | 音效id , 音效的唯一一标识 |
audioFilePath | 音效文件路径。 |
- 示例
javaAVChatManager.getInstance().preloadAudioEffect(id, file);
播放音效
- API介绍
音效加载成功之后可以播放音效。播放完成后有回调,参考 下文的事件回调 。
- API原型
java /**
* 播放音效
* @param effectId 音效id , 同预加载时的id
* @param loopback 音效循环次数 , -1 表示无限循环
* @param send 是否发送
* @param volume 播放及发送音量 [0.0f - 1.0f]
* @return {@code true} : 播放成功,{@code false}: 方法调用失败
*/
public abstract boolean playAudioEffect(int effectId, int loopback, boolean send, float volume);
- 参数说明
参数 | 说明 |
---|---|
effectId | 音效id , 音效的唯一标识 |
loopback | 音效的循环次数, -1 无限循环 |
send | 是否发送 |
volume | 播放和发送的音量 [0.0f - 1.0f] |
- 示例
javaAVChatManager.getInstance().playAudioEffect(effectId, loopback, send, volume);
停止播放音效
- API介绍
停止正在播放的音效
- API原型
java /**
* 停止播放音效
*
* @param effectId 音效id
* @return {@code true} 方法调用成功,其他失败
*/
public abstract boolean stopPlayAudioEffect(int effectId);
- 示例
javaAVChatManager.getInstance().stopPlayAudioEffect(effectId);
事件回调
预加载音效完成及播放完成都有相应的事件回调,相应的回调在AVChatStateObserver接口中。
- 预加载音效完成的回调
java /**
* 音效预加载结果回调
*
* @param effectId 音效id
* @param result 预加载结果 :
* @see AVChatAudioEffectEvent#AUDIO_EFFECT_PRELOAD_SUCCESS 加载成功
* @see AVChatAudioEffectEvent#AUDIO_EFFECT_PRELOAD_COUNT_LIMIT 音效个数超过了最大数量
* @see AVChatAudioEffectEvent#AUDIO_EFFECT_PRELOAD_TOO_LONG 单个文件时长太长
* @see AVChatAudioEffectEvent#AUDIO_EFFECT_PRELOAD_FAILED 加载失败(其他原因)
*/
void onAudioEffectPreload(int effectId, int result);
- 播放事件的回调
java /**
* 音效播放事件回调
*
* @param effectId 音效id
* @param event 事件类型:
* @see AVChatAudioEffectEvent#AUDIO_EFFECT_PLAY_COMPLETE 播放结束
*/
void onAudioEffectPlayEvent(int effectId, int event);
此文档是否对你有帮助?