Other language: English
“一起KTV” 是一个依附于直播聊天室的娱乐场景。在这个场景中,一个KTV房间里的演唱者给其他人播放 MV 视频,并跟随 MV 唱歌给所有人听。其中:
其中需要的功能有:
声网的“一起KTV”场景方案,提供了这个场景中实时音视频互动直播、MV 文件读取、人声和 MV 伴奏同步、音量控制、播放控制、发送 MV 伴奏和视频数据 等相关功能的解决方案。
整体架构如下图所示:
在 Agora.io 用户注册页 注册账号,并创建自己的项目获取到 App ID。
下载 Agora 视频通话/视频直播 SDK。
将有效的 App ID 填写进本项目的 Agora-Online-KTV/app/src/main/res/values/strings_config.xml
中。
<string name="agora_app_id"><#YOUR APP ID#></string>
解压下载到的 SDK 包,将其中的 libs
文件夹下的 *.jar
复制到本项目的 Android/Agora-Online-KTV/app/libs
下,其中的 libs
文件夹下的 arm64-v8a/x86/armeabi-v7a
复制到本项目的 Android/Agora-Online-KTV/app/src/main/jniLibs
下
使用 Android Studio 打开该项目,连接 Android 测试设备,编译并运行。
运行环境:
* Android SDK API Level >= 16
* Android Studio 3.1 +
* Android 4.1 或以上支持语音和视频功能的真机设备
将有效的 App ID 填写进 AgoraVideoViewController.m 中。
self.rtcEngine = [AgoraRtcEngineKit sharedEngineWithAppId:<#APP_ID#> delegate:self];
解压下载到的 SDK 包,将其中的 AgoraRtcEngineKit.framework
复制到本项目的 Agora-Online-KTV/Agora-Online-KTV
目录下。
使用 Xcode 打开 Agora-Online-KTV/Agora-Online-KTV.xcodeproj
,连接 iOS 测试设备,设置有效的开发者签名后即可运行。
运行环境:
* Xcode 10.0 +
* iOS 8.0 +
示例 App 的 API 流程如下图所示。其中 KTVKit
模块已经封装了在 KTV 场景下的声网引擎和 IJKPlayer 相关功能。
Agora SDK 关键 API 列表:
具体流程见声网 SDK 快速开始文档:
使用 ijkplayer 等已经实现了完善的在线/本地 MV 文件读取和控制功能的第三方控件,获取到 MV 的音视频帧。
使用声网 SDK 的 pushExternalVideoFrame 接口,将视频帧数据传入声网 SDK。
在 声网 SDK 的 onRecordAudioFrame C++ 回调中,将 MV 的音频帧数据和 声网 SDK 采集到的歌唱者音频帧数据混合起来,实现人声和伴奏的混音。具体可参看 Demo 中 KTVKit 内部的实现。
你也可以直接使用 Demo 中的 KTVKit
类,该类已经将 MV 文件读取、混音、控制和传输都封装成简单的接口,方便调用。
KTVKit
类以简化 MV 文件的读取和播放;ijkplayer
经过了必要的改造,不能替换成其他版本的 ijkplayer 库;ijkplayer
为动态库,并包含了模拟器架构。在正式上传 Appstore 审核前需要手动将其中的模拟器架构去掉,避免影响审核;KTVKit
必须在加入频道前进行初始化。如果需要在频道中启用 KTVKit,需要先离开当前频道;KTVKit
类支持有一个或者两个音轨的 MV 文件,不支持第三根或者更多的音轨。如果 MV 文件有大于一根音轨,KTVKit
初始默认读取第二根音轨;KTVKit
类目前只支持 mp4
格式的 MV 文件。常见问题整理:一起 KTV FAQ
The MIT License (MIT).
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。