播放背景音乐
本文将介绍如何在如何在使用 RTC Engine 直播功能时播放背景音乐。
接入指引
播放/停止背景音乐
建议在调用播放接口 startPlayMusic 之前使用 setMusicObserver 设置播放事件回调,以便帮助感知背景音乐的播放情况;当希望停止播放背景音乐时,调用接口stopPlayMusic 即可。
int mPlayBGMId = 1024; // 背景音乐 IDString[] 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 IDaudioMusicParam.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 IDaudioMusicParam.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; // 背景音乐 IDchar* 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();// 初始化 musicPlayObserveraudioEffectManager->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);
暂停/恢复背景音乐
private int mPlayBGMId = 1024; // 背景音乐 IDprivate 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; // 背景音乐 IDchar* 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 对背景音乐的音量大小进行设置,该接口可以同时设置所有背景音乐的本地音量和远端音量大小。
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 对某一首背景音乐的远端音量大小进行设置,该接口可以细粒度地控制每一首背景音乐在观众端可以听到的音量大小。
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 对某一首背景音乐的本地音量大小进行设置,该接口可以细粒度地控制每一首背景音乐在主播端可以听到的音量大小。
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。
调整背景音乐音调高低
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager();audioEffectManager.setMusicPitch(mPlayBGMId, 1); // 将某一首背景音乐的音调升高到 1audioEffectManager.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); // 将某一首背景音乐的音调升高到 1trtc_cloud_->setMusicPitch(mPlayBGMId, -1); // 将某一首背景音乐的音调降低到 -1
说明:
音调大小的取值范围为:-1~1,默认值为0.0f。
调整背景音乐变速效果
TXAudioEffectManager audioEffectManager = mCloud.getAudioEffectManager();audioEffectManager.setMusicSpeedRate(mPlayBGMId, 2); // 将某一首背景音乐的速度调整到 2audioEffectManager.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); // 将某一首背景音乐的速度调整到 2trtc_cloud_->setMusicSpeedRate(mPlayBGMId, 0.5); // 将某一首背景音乐的速度调整到 0.5
说明:
音乐速度的取值范围为:0.5~2,默认值为1.0f。
联系我们
如果有任何需要或者反馈,您可以联系:info_rtc@tencent.com。