音效文件播放
- C++
更新时间不可用
getEffectCurrentPosition
获取指定音效文件的播放位置。
virtual int getEffectCurrentPosition(int soundId) = 0;注: 请在调用 playEffect 后使用此方法。
参数
返回值
- 方法调用成功,返回指定音效文件的播放位置(毫秒)。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getEffectDuration
获取音效文件的时长。
virtual int getEffectDuration(const char* filePath) = 0;注: 请在加入频道后调用此方法。
参数
返回值
- 方法调用成功,返回指定音效文件的总时长(毫秒)。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getEffectsVolume
获取当前音效的音量。
virtual int getEffectsVolume() = 0;音量为 0 到 100 之间的整数,默认值为 100,表示原始音量。
注: 请在调用 playEffect 后调用此方法。
返回值
- 0:方法调用成功,返回音效的音量。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getVolumeOfEffect
获取指定音效文件的音量。
virtual int getVolumeOfEffect(int soundId) = 0;参数
返回值
- 方法调用成功,返回指定音效的音量,取值范围为 0 到 100,100 表示原始音量。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
pauseAllEffects
暂停所有音效。
virtual int pauseAllEffects() = 0;返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
pauseEffect
暂停指定音效文件的播放。
virtual int pauseEffect(int soundId) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
playAllEffects
播放所有音效文件。
virtual int playAllEffects(int loopCount, double pitch, double pan, int gain, bool publish = false) = 0;多次调用 preloadEffect 将多个音效文件预加载到内存后,可以调用该方法为频道内的所有用户播放所有已加载的音效文件。
参数
| 参数名 | 描述 |
|---|---|
loopCount | |
pitch | |
pan | |
gain | |
publish |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
playEffect
播放指定的本地或在线音效文件。
virtual int playEffect(int soundId, const char* filePath, int loopCount, double pitch, double pan, int gain, bool publish = false, int startPos = 0) = 0;调用 preloadEffect 后,可以调用该方法为频道内所有用户播放指定的音效。每次调用该方法只能播放一个音效。如需同时播放多个音效,需要多次调用该方法。
注:
- 如果需要播放在线音效文件,声网建议先将其缓存到本地设备,调用 preloadEffect 将其预加载到内存中,再调用该方法播放音效。否则,可能因加载超时或失败导致播放失败或无声。
- 建议同时播放的音效数量不超过三个。
- 该方法中的音效 ID 和文件路径必须与 preloadEffect 中的一致。
- 如果在调用 playEffect 前调用了 preloadEffect,则在 playEffect 执行后文件资源不会被关闭。下次调用 playEffect 时将直接从头开始播放。
- 如果在调用 playEffect 前未调用 preloadEffect,则在 playEffect 执行后资源将被销毁。下次调用 playEffect 时将尝试重新打开文件并从头播放。
调用时机
你可以在加入频道前或后调用该方法。
相关回调
成功调用该方法后,SDK 会触发 onAudioEffectFinished 回调报告音效播放完成。
参数
| 参数名 | 描述 |
|---|---|
soundId | |
filePath | |
loopCount | |
pitch | |
pan | |
gain | |
publish | |
startPos |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
playEffectEx
在频道中播放指定音效。
virtual int playEffectEx(const RtcConnection& connection, int soundId, const char* filePath, int loopCount, double pitch, double pan, int gain, bool publish = false, int startPos = 0) = 0;自从
自 v4.6.0 版本新增。
你可以调用该方法在频道内向所有用户播放指定音效。每次调用该方法只能播放一个音效。若需同时播放多个音效,请使用不同的 soundId 和 filePath 多次调用该方法。你还可以设置是否在频道中发布该音效。
注:
- 声网建议不要同时播放超过三个音效。
- 该方法中的音效 ID 和文件路径必须与 preloadEffectEx 方法中的保持一致。
- 如果在调用 playEffectEx 之前调用了 preloadEffectEx,playEffectEx 执行后不会关闭文件资源。下次调用 playEffectEx 时会直接从头开始播放。
- 如果在调用 playEffectEx 之前未调用 preloadEffectEx,playEffectEx 执行后会销毁资源。下次调用 playEffectEx 时会尝试重新打开文件并从头播放。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
connection | RtcConnection 对象,详见 RtcConnection。 |
soundId | |
filePath | |
loopCount | |
pitch | |
pan | |
gain | |
publish | |
startPos |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
preloadEffect
预加载指定的音效文件。
virtual int preloadEffect(int soundId, const char* filePath, int startPos = 0) = 0;该方法每次调用时仅将一个指定的音效文件预加载到内存中。要预加载多个音效文件,需要多次调用该方法。预加载完成后,你可以调用 playEffect 播放预加载的音效,或调用 playAllEffects 播放所有预加载的音效。
注:
- 为确保通信顺畅,请限制音效文件的大小。
- 声网建议在加入频道前调用该方法。
- 如果在调用 playEffect 之前调用了 preloadEffect,则在 playEffect 执行后文件资源不会被关闭。下次调用 playEffect 时会从头开始播放。
- 如果在调用 playEffect 之前未调用 preloadEffect,则在 playEffect 执行后资源会被销毁。下次调用 playEffect 时会尝试重新打开文件并从头开始播放。
调用时机
建议在加入频道前调用该方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
preloadEffectEx
将指定音效预加载到频道中。
virtual int preloadEffectEx(const RtcConnection& connection, int soundId, const char* filePath, int startPos = 0) = 0;自从
自 v4.6.0 版本新增。
每次调用该方法时,只能将一个音效文件预加载到内存中。如果需要预加载多个音效文件,请多次调用该方法。预加载完成后,可以调用 playEffect 播放预加载的音效,或调用 playAllEffects 播放所有预加载的音效。
注:
- 为确保使用体验流畅,音效文件的大小不应超过限制。
- 声网建议在加入频道前调用该方法。
- 如果在调用 playEffectEx 前已调用 preloadEffectEx,则 playEffectEx 执行后不会关闭文件资源。下次调用 playEffectEx 时会直接从头开始播放。
- 如果在调用 playEffectEx 前未调用 preloadEffectEx,则 playEffectEx 执行后会销毁资源。下次调用 playEffectEx 时会尝试重新打开文件并从头开始播放。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
connection | 连接信息。详见 RtcConnection。 |
soundId | |
filePath | |
startPos |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
resumeAllEffects
恢复播放所有音效文件。
virtual int resumeAllEffects() = 0;调用 pauseAllEffects 暂停播放后,可以调用该方法恢复播放。
调用时机
请在调用 pauseAllEffects 之后调用此方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
resumeEffect
恢复播放指定音效的播放。
virtual int resumeEffect(int soundId) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setEffectPosition
设置音效文件的播放位置。
virtual int setEffectPosition(int soundId, int pos) = 0;设置成功后,音效文件将从指定位置开始播放。
注: 请在调用 playEffect 方法后调用此方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setEffectsVolume
设置音效播放音量。
virtual int setEffectsVolume(int volume) = 0;调用时机
在调用 playEffect 方法之后调用。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setVolumeOfEffect
设置指定音效文件的播放音量。
virtual int setVolumeOfEffect(int soundId, int volume) = 0;调用时机
在调用 playEffect 之后调用该方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
stopAllEffects
停止播放所有音效。
virtual int stopAllEffects() = 0;调用该方法可以停止所有音效的播放。如果只需暂停播放,请调用 pauseAllEffects。
调用时机
请在调用 playEffect 之后调用此方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
stopEffect
停止播放指定音效。
virtual int stopEffect(int soundId) = 0;调用该方法可停止播放指定的音效。如果只需暂停播放,请调用 pauseEffect 方法。
调用时机
请在调用 playEffect 方法之后调用此方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
unloadAllEffects
释放内存中的所有预加载音效。
virtual int unloadAllEffects() = 0;返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
unloadEffect
释放指定的预加载音效文件。
virtual int unloadEffect(int soundId) = 0;调用 preloadEffect 将音效文件加载到内存后,如需释放该音效文件,可调用该方法。
调用时机
你可以在加入频道前或加入频道后调用此方法。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
所属接口类
onAudioEffectFinished
本地音效文件播放结束回调。
virtual void onAudioEffectFinished(int soundId) {}当本地音效文件播放结束时,会触发该回调。你可以通过该回调获知指定音效是否已播放完成。