2024/09/19 14:52:02
播放音效或音乐文件
在游戏或 K 歌等实时音视频场景中,为烘托气氛、增添趣味性,用户通常需要播放音效或音乐文件。
本文介绍如何在你的项目中实现播放音效或音乐文件功能。
技术原理
声网提供了以下 API, 帮助你实现播放音效或音乐文件:
- 音效 API:播放持续时间短的音效文件,例如掌声、欢呼声、打斗声、枪击声等,通常可以同时播放多个音效文件。
- 音乐 API:播放比较长的音乐文件,例如,在唱歌时播放伴奏,在聊天时播放背景音乐。同一时间,只能播放一个音乐文件。
注意
如果使用 StartAudioMixing 等音乐 API 播放时长较短的音效文件、或使用 PlayEffect 等音效 API 播放时长较长的音乐文件可能会播放失败。
这些方法主要包括如下功能:
| 功能 | 音效 API | 音乐 API |
|---|---|---|
| 播放或停止播放特定的音频文件 |
|
|
| 暂停或恢复播放音频文件 |
|
|
| 获取和调整音频文件的播放位置和音量 |
|
|
| 报告音频文件的播放状态 | OnAudioEffectFinished | OnAudioMixingStateChanged |
前提条件
在进行操作之前,请确保你已满足以下条件:
- 项目已经实现了基本的实时音视频功能。
- 需播放的音乐或音效文件的路径有效。
实现播放音频文件
本节介绍如何调用音效 API 和音乐混音 API,在你的项目中播放音效和音乐文件。
实现播放音效
加入频道前,调用 PreloadEffect 方法预加载音效文件。加入频道后,调用 PlayEffect 方法播放指定音效文件。多次调用 PlayEffect,设置多个音效 ID,同时播放多个音效文件。音效播放结束后,SDK 触发 OnAudioEffectFinished 回调。
在你的声网项目中,打开管理音效播放的文件并添加如下代码:
C#
// 加入频道前预加载音效文件
RtcEngine.PreloadEffect(1, "File Path 1", 0);
RtcEngine.PreloadEffect(2, "File Path 2", 0);
RtcEngine.PreloadEffect(3, "File Path 3", 0);
// 加入频道后播放预加载的音效文件
RtcEngine.PlayEffect(1, "File Path 1", 1, 0, 0, 0, true, 0);
RtcEngine.PlayEffect(2, "File Path 2", 1, 0, 0, 0, true, 0);
RtcEngine.PlayEffect(3, "File Path 3", 1, 0, 0, 0, true, 0);
// 当本地音效文件播放结束时触发
public override void OnAudioEffectFinished(int soundId)
{
Debug.Log("effect play finish :" + soundId);
}
播放音乐
加入频道之前或之后,调用 StartAudioMixing 方法播放音乐文件。成功调用该方法后,音乐混音状态发生变化时,SDK 触发 OnAudioMixingStateChanged 回调。该回调也报告音乐混音状态变化的原因。
在你的声网项目中,打开管理音效播放的文件夹添加以下代码:
C#
RtcEngine.StartAudioMixing("File Path", false, -1);
public override void OnAudioMixingStateChanged(AUDIO_MIXING_STATE_TYPE state, AUDIO_MIXING_REASON_TYPE errorCode)
{
Debug.Log(string.Format("AUDIO_MIXING_STATE_TYPE: ${0}, AUDIO_MIXING_REASON_TYPE: ${1}",
state, errorCode));
}
你还可以通过下列方法实现播放控制:
PauseAudioMixing:暂停播放。ResumeAudioMixing:恢复播放。StopAudioMixing:停止播放。AdjustAudioMixingPlayoutVolume:调节当前音乐文件在本地的播放音量。AdjustAudioMixingPublishVolume:调节当前音乐文件在远端的播放音量。
参考信息
示例项目
声网提供播放音效、音乐文件的示例项目供你参考。你可以前往下载或查看其中的源代码。
API 参考
-
PreloadEffect -
PlayEffect -
OnAudioEffectFinished -
StartAudioMixing -
OnAudioMixingStateChanged -
PauseAudioMixing -
ResumeAudioMixing -
StopAudioMixing -
AdjustAudioMixingPlayoutVolume -
AdjustAudioMixingPublishVolume