播放背景音乐

本文将介绍如何在如何在使用 RTC Engine 直播功能时播放背景音乐。

接入指引

播放/停止背景音乐

TRTC 提供 TXAudioMusicParam 信息,用于在播放背景音乐接口 startPlayMusic 中指定背景音乐的相关信息,包括背景音乐 ID、文件路径和循环次数等。
建议在调用播放接口 startPlayMusic 之前使用 setMusicObserver 设置播放事件回调,以便帮助感知背景音乐的播放情况;当希望停止播放背景音乐时,调用接口stopPlayMusic 即可。
Android
iOS
Mac
Windows
int mPlayBGMId = 1024; // 背景音乐 ID
String[] mBgmUrlArray = { // 背景音乐 URL 地址 "https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/PositiveHappyAdvertising.mp3", "https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/SadCinematicPiano.mp3", "https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/WonderWorld.mp3"};

// 播放背景音乐
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager(); // 获取声音效果管理类
audioEffectManager.setMusicObserver(mPlayBGMId, new TXAudioEffectManager.TXMusicPlayObserver() { @Override public void onStart(int i, int i1) { Toast.makeText(getApplicationContext(), "id: " + i + "errCode: " + i1, Toast.LENGTH_LONG).show(); } });

TXAudioEffectManager.AudioMusicParam audioMusicParam = new TXAudioEffectManager.AudioMusicParam(mPlayBGMId, mBgmUrlArray[mPlayBGMId - 1024]); // 设置背景音乐播放参数 audioMusicParam.publish = true; // 将背景音乐传到远端 audioEffectManager.startPlayMusic(audioMusicParam);
// 停止播放背景音乐
audioEffectManager.stopPlayMusic(mPlayBGMId);
// .h 文件
@property(nonatomic, strong) NSArray *mBgmUrlArray;
@property(nonatomic, assign) int mPlayBGMId;

// .m文件
_mPlayBGMId = 1024;
_mBgmUrlArray = @[@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/PositiveHappyAdvertising.mp3",
@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/SadCinematicPiano.mp3",
@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/WonderWorld.mp3"];

// 播放背景音乐
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager]; // 获取声音效果管理类

TXAudioMusicParam *audioMusicParam = [[TXAudioMusicParam alloc] init];
audioMusicParam.ID = self.mPlayBGMId; // 指定播放 BGM ID
audioMusicParam.path = self.mBgmUrlArray[self.mPlayBGMId - 1024]; // 指定播放 BGM 地址
audioMusicParam.publish = YES; // 将背景音乐传到远端
[audioEffectManager startPlayMusic:audioMusicParam onStart:NULL onProgress:NULL onComplete:NULL];
// 停止播放背景音乐
[audioEffectManager stopPlayMusic:self.mPlayBGMId];
// .h 文件
@property(nonatomic, strong) NSArray *mBgmUrlArray;
@property(nonatomic, assign) int mPlayBGMId;

// .m文件
_mPlayBGMId = 1024;
_mBgmUrlArray = @[@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/PositiveHappyAdvertising.mp3",
@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/SadCinematicPiano.mp3",
@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/WonderWorld.mp3"];

// 播放背景音乐
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager]; // 获取声音效果管理类

TXAudioMusicParam *audioMusicParam = [[TXAudioMusicParam alloc] init];
audioMusicParam.ID = self.mPlayBGMId; // 指定播放 BGM ID
audioMusicParam.path = self.mBgmUrlArray[self.mPlayBGMId - 1024]; // 指定播放 BGM 地址
audioMusicParam.publish = YES; // 将背景音乐传到远端
[audioEffectManager startPlayMusic:audioMusicParam onStart:NULL onProgress:NULL onComplete:NULL];
// 停止播放背景音乐
[audioEffectManager stopPlayMusic:self.mPlayBGMId];
// 实现 ITXMusicPlayObserver 中的纯虚函数
class MusicPlayObserver : public ITXMusicPlayObserver {
public:
void onStart(int id, int errCode) {
// 实现 onStart 方法
}

void onPlayProgress(int id, long curPtsMS, long durationMS) {
// 实现 onPlayProgress 方法
}

void onComplete(int id, int errCode) {
// 实现 onComplete 方法
}
};

int mPlayBGMId = 1024; // 背景音乐 ID
char* mBgmUrlArray[] = { // 背景音乐 URL 地址
"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/PositiveHappyAdvertising.mp3",
"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/SadCinematicPiano.mp3",
"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/WonderWorld.mp3"
};

// 播放背景音乐
ITXAudioEffectManager* audioEffectManager = trtc_cloud_->getAudioEffectManager(); // 获取声音效果管理类
ITXMusicPlayObserver* musicPlayObserver = new MusicPlayObserver();// 初始化 musicPlayObserver
audioEffectManager->setMusicObserver(mPlayBGMId, musicPlayObserver);

if (mPlayBGMId >= 1024 && mPlayBGMId < 1024 + sizeof(mBgmUrlArray) / sizeof(mBgmUrlArray[0])) {
// 设置背景音乐参数
AudioMusicParam audioMusicParam = { mPlayBGMId, mBgmUrlArray[mPlayBGMId - 1024] };
audioMusicParam.publish = true; // 将背景音乐传到远端
audioEffectManager->startPlayMusic(audioMusicParam); // 开始播放背景音乐
}

// 停止播放背景音乐
audioEffectManager->stopPlayMusic(mPlayBGMId);

暂停/恢复背景音乐

调用 pausePlayMusic/resumePlayMusic 可以对正在播放的背景音乐进行暂停和恢复播放。
Android
iOS
Mac
Windows
private int mPlayBGMId = 1024; // 背景音乐 ID
private String[] mBgmUrlArray = { // 背景音乐 URL 地址 "https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/PositiveHappyAdvertising.mp3", "https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/SadCinematicPiano.mp3", "https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/WonderWorld.mp3"};

// 暂停背景音乐
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager(); audioEffectManager.pausePlayMusic(mPlayBGMId);
// 恢复背景音乐
audioEffectManager.resumePlayMusic(mPlayBGMId);
// .h 文件
@property(nonatomic, strong) NSArray *mBgmUrlArray;
@property(nonatomic, assign) int mPlayBGMId;

// .m文件
_mPlayBGMId = 1024;
_mBgmUrlArray = @[@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/PositiveHappyAdvertising.mp3",
@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/SadCinematicPiano.mp3",
@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/WonderWorld.mp3"];

// 暂停背景音乐
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager pausePlayMusic:self.mPlayBGMId];

// 恢复背景音乐
[audioEffectManager resumePlayMusic:self.mPlayBGMId];
// .h 文件
@property(nonatomic, strong) NSArray *mBgmUrlArray;
@property(nonatomic, assign) int mPlayBGMId;

// .m文件
_mPlayBGMId = 1024;
_mBgmUrlArray = @[@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/PositiveHappyAdvertising.mp3",
@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/SadCinematicPiano.mp3",
@"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/WonderWorld.mp3"];

// 暂停背景音乐
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager pausePlayMusic:self.mPlayBGMId];

// 恢复背景音乐
[audioEffectManager resumePlayMusic:self.mPlayBGMId];
int mPlayBGMId = 1024; // 背景音乐 ID
char* mBgmUrlArray[] = { // 背景音乐 URL 地址
"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/PositiveHappyAdvertising.mp3",
"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/SadCinematicPiano.mp3",
"https://sdk-liteav-1252463788.cos.ap-hongkong.myqcloud.com/app/res/bgm/trtc/WonderWorld.mp3"
};

// 暂停背景音乐
ITXAudioEffectManager* audioEffectManager = trtc_cloud_->getAudioEffectManager();
audioEffectManager->pausePlayMusic(mPlayBGMId);

// 恢复背景音乐
audioEffectManager->resumePlayMusic(mPlayBGMId);

设置背景音乐音量大小

调用 setAllMusicVolume 对背景音乐的音量大小进行设置,该接口可以同时设置所有背景音乐的本地音量和远端音量大小。
Android
iOS
Mac
Windows
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager();
audioEffectManager.setAllMusicVolume(100); // 将所有背景音乐的本地音量和远端音量都调整到100
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setAllMusicVolume:100]; // 将所有背景音乐的本地音量和远端音量都调整到100
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicPublishVolume:self.mPlayBGMId volume:100]; // 将某一首背景音乐的远端音量调整为 100
ITXAudioEffectManager* audioEffectManager = trtc_cloud_->getAudioEffectManager();
trtc_cloud_->setAllMusicVolume(100); // 将某一首背景音乐的远端音量调整为 100
调用 setMusicPublishVolume 对某一首背景音乐的远端音量大小进行设置,该接口可以细粒度地控制每一首背景音乐在观众端可以听到的音量大小。
Android
iOS
Mac
Windows
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager();
audioEffectManager.setMusicPublishVolume(mPlayBGMId, 100); // 将某一首背景音乐的远端音量调整为 100
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicPublishVolume:self.mPlayBGMId volume:100]; // 将某一首背景音乐的远端音量调整为 100
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicPublishVolume:self.mPlayBGMId volume:100]; // 将某一首背景音乐的远端音量调整为 100
ITXAudioEffectManager* audioEffectManager = trtc_cloud_->getAudioEffectManager();
trtc_cloud_->setMusicPublishVolume(mPlayBGMId, 100); // 将某一首背景音乐的远端音量调整为 100
调用 setMusicPlayoutVolume 对某一首背景音乐的本地音量大小进行设置,该接口可以细粒度地控制每一首背景音乐在主播端可以听到的音量大小。
Android
iOS
Mac
Windows
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager();
audioEffectManager.setMusicPlayoutVolume(mPlayBGMId, 100); // 将某一首背景音乐的本地音量调整为 100
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicPlayoutVolume:self.mPlayBGMId volume:100]; // 将某一首背景音乐的本地音量调整为 100
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicPlayoutVolume:self.mPlayBGMId volume:100]; // 将某一首背景音乐的本地音量调整为 100
ITXAudioEffectManager* audioEffectManager = trtc_cloud_->getAudioEffectManager();
trtc_cloud_->setMusicPlayoutVolume(mPlayBGMId, 100); // 将某一首背景音乐的本地音量调整为 100
说明:
音量大小的取值范围为:0-100,默认值为60。

调整背景音乐音调高低

调用 setMusicPitch 对某一首背景音乐的音调高低进行调整。
Android
iOS
Mac
Windows
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager();
audioEffectManager.setMusicPitch(mPlayBGMId, 1); // 将某一首背景音乐的音调升高到 1

audioEffectManager.setMusicPitch(mPlayBGMId, -1); // 将某一首背景音乐的音调降低到 -1
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicPitch:self.mPlayBGMId pitch:1]; // 将某一首背景音乐的音调升高到 1

[audioEffectManager setMusicPitch:self.mPlayBGMId pitch:-1]; // 将某一首背景音乐的音调降低到 -1
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicPitch:self.mPlayBGMId pitch:1]; // 将某一首背景音乐的音调升高到 1

[audioEffectManager setMusicPitch:self.mPlayBGMId pitch:-1]; // 将某一首背景音乐的音调降低到 -1
ITXAudioEffectManager* audioEffectManager = trtc_cloud_->getAudioEffectManager();
trtc_cloud_->setMusicPitch(mPlayBGMId, 1); // 将某一首背景音乐的音调升高到 1

trtc_cloud_->setMusicPitch(mPlayBGMId, -1); // 将某一首背景音乐的音调降低到 -1
说明:
音调大小的取值范围为:-1~1,默认值为0.0f。

调整背景音乐变速效果

调用 setMusicSpeedRate 对某一首背景音乐的音调高低进行调整。
Android
iOS
Mac
Windows
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager();
audioEffectManager.setMusicSpeedRate(mPlayBGMId, 2); // 将某一首背景音乐的速度调整到 2

audioEffectManager.setMusicSpeedRate(mPlayBGMId, 0.5); // 将某一首背景音乐的速度调整到 0.5
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicSpeedRate:self.mPlayBGMId speedRate:2]; // 将某一首背景音乐的速度调整到 2

[audioEffectManager setMusicSpeedRate:self.mPlayBGMId speedRate:0.5]; // 将某一首背景音乐的速度调整到 0.5
TXAudioEffectManager *audioEffectManager = [self.trtcCloud getAudioEffectManager];
[audioEffectManager setMusicSpeedRate:self.mPlayBGMId speedRate:2]; // 将某一首背景音乐的速度调整到 2

[audioEffectManager setMusicSpeedRate:self.mPlayBGMId speedRate:0.5]; // 将某一首背景音乐的速度调整到 0.5
ITXAudioEffectManager* audioEffectManager = trtc_cloud_->getAudioEffectManager();
trtc_cloud_->setMusicSpeedRate(mPlayBGMId, 2); // 将某一首背景音乐的速度调整到 2

trtc_cloud_->setMusicSpeedRate(mPlayBGMId, 0.5); // 将某一首背景音乐的速度调整到 0.5
说明:
音乐速度的取值范围为:0.5~2,默认值为1.0f。

联系我们

如果有任何需要或者反馈,您可以联系:info_rtc@tencent.com。