一起 KTV 是一個很重要,且能體現產品效能的功能,在學習聲網 SDK 的時候,看到了一起 KTV 的 GitHub demo,並且官方也給出了相應的文件說明,在此也對我的學習過程做一個簡單的記錄。
場景描述
“一起KTV” 是一個依附於直播聊天室的娛樂場景。在這個場景中,一個KTV房間裡的演唱者給其他人播放 MV 視訊,並跟隨 MV 唱歌給所有人聽。其中:
- 觀眾可以上麥,隨時與房主進行實時音視訊互動;
- 演唱者隨著 MV 唱歌時,可以控制歌曲的切換和暫停;
- 演唱者也可以單獨只播放 MV 檔案;
- 演唱者可以自己調節 MV 伴奏和人聲的音量; = 觀眾可以排麥,當前演唱者結束後由下一位排麥中的人成為演唱者;
其中需要的功能有:
- 基礎的音視訊互動直播,包括主播、互動連麥;
- 本地/線上 MV 檔案讀取;
- 將 MV 伴奏和視訊傳送給其他人;
- 演唱者人聲和 MV 伴奏音樂的混合;
產品架構
聲網的“一起KTV”場景方案,提供了這個場景中實時音視訊互動直播、MV 檔案讀取、人聲和 MV 伴奏同步、音量控制、播放控制、傳送 MV 伴奏和視訊資料 等相關功能的解決方案。
整體架構如下圖所示:
- 演唱者和其他使用者一起加入聲網頻道,實現實時音視訊通話,其中當前演唱者和連麥者為主播模式,聽眾為觀眾模式;
- 演唱者播放本地或者線上的 MV 檔案;
- MV 檔案解碼出來的音訊幀資料,混音進聲網 SDK 採集到的演唱者歌聲,並通過聲網 SDK 傳送到頻道中;
- MV 檔案解碼出來的視訊幀資料通過聲網 SDK 傳送到頻道中;
- 房間內的其他使用者通過聲網 SDK 接收演唱者的歌聲和 MV 資料。
執行 demo
因為我是 Android 使用者,所以就進行的 Android demo 體驗。
首先,你可以到這裡看原始碼:github.com/AgoraIO-Use…
- 在 Agora.io 中建立自己的專案,並獲取到相應的 App ID。如果你還沒註冊,記得先註冊一下 dashboard.agora.io/cn/signup/。
- 之後在路徑
Online-KTV/Agora-Online-KTV-Android/app/src/main/res/values/strings_config.xml
中找到strings_config.xml
這個檔案,檔案內容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- PLEASE KEEP THIS App ID IN SAFE PLACE -->
<!-- Get your own App ID at https://dashboard.agora.io/ -->
<!-- After you entered the App ID, remove <##> outside of Your App ID -->
<!-- For formal released project, please use Dynamic Key
https://docs.agora.io/en/2.3.1/product/Video/Agora%20Platform/key_native?platform=Android -->
<string name="agora_app_id"><#YOUR APP ID#></string>
</resources>
複製程式碼
之後你需要把之前獲取的 App ID 填寫在這裡:
<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 或以上支援語音和視訊功能的真機裝置
複製程式碼
然後進行測試執行就好了。
直接體驗 demo
當然,如果你只想簡單的體驗一下,不想執行程式碼。你也可以直接下載官方提供的 SDK。直接下載安裝 Android apk 安裝包 進行體驗。
成功執行 Demo 後,在介面上輸入頻道名稱並選擇 Broadcaster,等提示 KTV 載入成功後點選“開始播放”即開始 KTV 演唱。
使用另一臺裝置輸入相同的頻道名並選擇 Audience,即為觀眾觀看。
示例 App 的 API 流程
下圖是官方提供的示例 App 的 API 流程:
其他補充
- 視訊通話 SDK 完全相容語音 SDK 的介面。這一點很方便,節省了很多開發工作。
- 可以通過 VLC 工具,或者 FFmpeg 相關命令檢視視訊檔案取樣率。本樣例視訊的取樣率是 48000 Hz。
- 常見的 8000、16000、32000、44100、48000 Hz 取樣率都支援,所以普適性也很好。
- 可以使用 FFmpeg 的相關命令,比如把雙音軌視訊 MKV 格式轉化為 44100 Hz 音訊取樣率的 MP4 格式:ffmpeg -i ~/video.mkv -map 0:v -vcodec mpeg4 -map 0:a -acodec copy -ar 44100 -strict -2 output.mp4