聲網一起 KTV 功能初體驗 | 掘金技術徵文

juejuea發表於2019-05-04

一起 KTV 是一個很重要,且能體現產品效能的功能,在學習聲網 SDK 的時候,看到了一起 KTV 的 GitHub demo,並且官方也給出了相應的文件說明,在此也對我的學習過程做一個簡單的記錄。

場景描述

“一起KTV” 是一個依附於直播聊天室的娛樂場景。在這個場景中,一個KTV房間裡的演唱者給其他人播放 MV 視訊,並跟隨 MV 唱歌給所有人聽。其中:

  • 觀眾可以上麥,隨時與房主進行實時音視訊互動;
  • 演唱者隨著 MV 唱歌時,可以控制歌曲的切換和暫停;
  • 演唱者也可以單獨只播放 MV 檔案;
  • 演唱者可以自己調節 MV 伴奏和人聲的音量; = 觀眾可以排麥,當前演唱者結束後由下一位排麥中的人成為演唱者;

其中需要的功能有:

  • 基礎的音視訊互動直播,包括主播、互動連麥;
  • 本地/線上 MV 檔案讀取;
  • 將 MV 伴奏和視訊傳送給其他人;
  • 演唱者人聲和 MV 伴奏音樂的混合;

產品架構

聲網的“一起KTV”場景方案,提供了這個場景中實時音視訊互動直播、MV 檔案讀取、人聲和 MV 伴奏同步、音量控制、播放控制、傳送 MV 伴奏和視訊資料 等相關功能的解決方案。

整體架構如下圖所示:

聲網一起 KTV 功能初體驗 | 掘金技術徵文

  1. 演唱者和其他使用者一起加入聲網頻道,實現實時音視訊通話,其中當前演唱者和連麥者為主播模式,聽眾為觀眾模式;
  2. 演唱者播放本地或者線上的 MV 檔案;
  3. MV 檔案解碼出來的音訊幀資料,混音進聲網 SDK 採集到的演唱者歌聲,並通過聲網 SDK 傳送到頻道中;
  4. MV 檔案解碼出來的視訊幀資料通過聲網 SDK 傳送到頻道中;
  5. 房間內的其他使用者通過聲網 SDK 接收演唱者的歌聲和 MV 資料。

執行 demo

因為我是 Android 使用者,所以就進行的 Android demo 體驗。

首先,你可以到這裡看原始碼:github.com/AgoraIO-Use…

  1. 在 Agora.io 中建立自己的專案,並獲取到相應的 App ID。如果你還沒註冊,記得先註冊一下 dashboard.agora.io/cn/signup/。

聲網一起 KTV 功能初體驗 | 掘金技術徵文

  1. 之後在路徑 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>
複製程式碼
  1. 將你下載的 SDK 包解壓,將其中的 libs 資料夾下的 *.jar 複製到本專案的 Android/Agora-Online-KTV/app/libs 下,其中的 libs 資料夾下的 arm64-v8a/x86/armeabi-v7a 複製到本專案的 Android/Agora-Online-KTV/app/src/main/jniLibs 下。

  2. 使用 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 流程:

聲網一起 KTV 功能初體驗 | 掘金技術徵文

其他補充

  1. 視訊通話 SDK 完全相容語音 SDK 的介面。這一點很方便,節省了很多開發工作。
  2. 可以通過 VLC 工具,或者 FFmpeg 相關命令檢視視訊檔案取樣率。本樣例視訊的取樣率是 48000 Hz。
  3. 常見的 8000、16000、32000、44100、48000 Hz 取樣率都支援,所以普適性也很好。
  4. 可以使用 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

Agora SDK 使用體驗徵文大賽 | 掘金技術徵文,徵文活動正在進行中

相關文章