聲網 Agora Native/Web SDK 3.0上線

我們近期發佈了 Agora Native SDK 3.0 與 Agora Web SDK 3.0.2 版本,涉及平臺包括  Android、iOS、macOS、Windows 和 Web在該版本對通信場景採用了全新的系統架構,並升級了通信和直播場景下的 last mile 網絡策略。在帶寬不足時,新的網絡策略能充分利用上下行有限帶寬提升有效碼率,從而增強弱網對抗能力,極大提升了弱網情況下通信和直播場景的終端用戶體驗。

 

由於新版本 SDK 通信場景下采用了新的系統架構,爲保證新老版本通信用戶的互通兼容,我們使用了回退機制。如果頻道內有老版本通信用戶加入,則新版本終端用戶會回退成老版本通信。一旦回退,頻道內所有用戶都無法享受新版本帶來的體驗提升。因此我們強烈推薦同步升級所有終端用戶到新版本。

 

我們在此之前已經發布了本地服務端錄製 SDK 3.0。爲確保可以享受全新架構和網絡策略優化帶來的好處,使用本地服務端錄製的用戶,請務必同步升級本地服務端錄製 SDK 至 3.0.0 版本。

新版本新特性

 1. 多頻道管理(Native)

聲網 Agora SDK 支持多頻道功能,且頻道數量無上限,可以實現更豐富的場景,例如超級小班課。所謂超級小班課,就是將原有的“一個主講老師,百名學生聽課”的直播大班拆分爲多個小班(即多頻道),每個小班由數名學生組成,小班中的學生既可以看到主講老師授課,又能進行班內交流,比如進行小組討論。

爲方便用戶在同一時間加入多個頻道,該版本新增了 RtcChannel 和 IRtcChannelEventHandler 類。通過創建多個 RtcChannel 對象,用戶可以加入各 RtcChannel 對象對應的頻道中,實現多頻道功能。

加入多個頻道後,用戶可以同時接收多個頻道的流,但只能同時在一個頻道內發單視頻源流。該功能適用於用戶需要同時接收多個頻道的流,或頻繁切換頻道發流的場景。詳細的集成步驟和注意事項,請在聲網文檔中心搜索“加入多頻道”。

2. 視頻原始數據(Native)

爲方便開發者獲取傳輸各階段的視頻原始數據,滿足更多場景需求,該版本在 IVideoFrameObserver 類中新增如下 C++ 回調接口: 

  • onPreEncodeVideoFrame:獲取前處理後、編碼前的本地視頻原始數據。該方法適用於有視頻前處理需求的開發場景。

  • getSmoothRenderingEnabled:設置是否對獲取的視頻數據進行平滑處理。平滑處理後的視頻幀,出幀時間間隔會更均勻,因此視頻自渲染的體驗更好。

3. 調節本地播放的指定遠端用戶音量(Native)

在多人音視頻交互的場景下,總會聽到有的人聲音大,有的人聲音小,每次都需要提醒對方,影響會議進度或通話體驗。爲了提升用戶體驗,3.0新增 adjustUserPlaybackSignalVolume 方法,用以調節本地用戶聽到的指定遠端用戶的音量。通話或直播過程中,你可以多次調用該方法,來調節多個遠端用戶在本地播放的音量,或對某個遠端用戶在本地播放的音量調節多次。

4. 媒體播放器組件(Native)

爲豐富直播玩法,我們發佈了媒體播放器組件,支持主播在直播過程中,播放本地或在線媒體資源,並同步分享給頻道內所有用戶。詳情請在聲網文檔中心搜索“媒體播放器組件”。 

5. 自採集視頻支持雙流模式(Web)

對使用videoSource 屬性創建的視頻流,該版本支持開啓雙流模式 (enableDualStream)。雙流指視頻大流和視頻小流。發佈端可以開啓雙流模式,同時發送大流和小流。訂閱端可以根據自己的網絡情況選擇接收大流或小流。

6. 跨頻道媒體流轉發(Web)

跨頻道媒體流轉發,指將主播的媒體流轉發至其他直播頻道,實現主播與其他頻道的主播實時互動的場景。該版本新增如下方法,通過將源頻道中的媒體流轉發至目標頻道,實現跨直播間連麥功能: 

  • startChannelMediaRelay

  • updateChannelMediaRelay

  • stopChannelMediaRelay

在跨頻道媒體流轉發過程中,SDK 會通過 Client.on("channel-media-relay-state") 和 Client.on("channel-media-relay-event") 回調報告媒體流轉發的狀態和事件。 該功能的實現方法詳見聲網文檔中心“跨直播間連麥”。

7. 屏幕共享可分享背景音(Web)

在 StreamSpec 接口中新增 screenAudio 屬性,支持屏幕共享的同時分享本地播放的背景音,詳見文檔中心“分享音頻”。

8. 美顏(Web)

Web 瀏覽器端新增支持美顏了。在新版本中,我們新增了方法 setBeautyEffectOptions,支持美白、磨皮、紅潤膚色等美顏效果。 

9. 推流水印(Web)

一些用戶會出於內容版權等原因,在視頻畫面中增加水印。新版本的 Web SDK 在 LiveTranscoding 接口中新增 images 屬性,支持將在線 PNG 圖片作爲水印添加到正在進行的推流直播中。 

10. 加密/解密失敗通知(Web)

新增 Client.on("crypt-error") 回調,在發佈或訂閱流時出現加解密錯誤時可以收到通知。

版本改進

1.  音頻編碼屬性

爲滿足更高音質需求,該版本調整了直播場景下 AUDIO_PROFILE_DEFAULT (0) 對應的音頻編碼屬性,詳見文檔中心。

2. 鏡像模式

爲提升視頻鏡像的使用體驗,該版本對以下接口進行了變動: 

  • 視頻編碼鏡像:在 VideoEncoderConfiguration 結構體中,新增 mirrorMode 成員,方便設置本地視頻編碼的鏡像模式,即遠端看本地是否鏡像。

  • 視頻渲染鏡像:在 VideoCanvas 結構體中,新增 mirrorMode 成員,方便你在調用 setupLocalVideo 初始化本地視圖時,設置本地看本地是否鏡像,以及調用 setupRemoteVideo 初始化遠端視圖時,設置本地看遠端是否鏡像;同時在 setLocalRenderMode 和 setRemoteRenderMode 方法中新增 mirrorMode 參數,支持在通話中更新本地看本地,或本地看遠端的鏡像模式。

3. 質量透明

爲方便開發者獲取更多通話統計信息,該版本在 RtcStats 類中新增 gatewayRtt、memoryAppUsageRatio、memoryTotalUsageRatio 和 memoryAppUsageInKbytes 成員,方便更好地監控通話的質量和通話過程中的內存使用情況。

4. 其他提升

該版本自動開啓直播場景下 Native SDK 與 Web SDK 的互通,並廢棄原有的 enableWebSdkInteroperability 方法。

5. 遠端視頻狀態(Web)

新增 Client.on("enable-local-video") 和 Client.on("disable-local-video") 回調,當遠端 Native SDK 用戶通過 enableLocalVideo 方法打開或關閉自己的視頻採集時,Web 端可以收到通知。

6. 離線原因(Web)

在 Client.on("peer-leave") 回調中增加 reason 參數,當遠端用戶掉線時可以通過該參數值瞭解具體原因。

升級提示

新版本的通信場景下的 API 方法,以及日誌默認保存路徑已經改變。同時,新版本也新增和替換了部分 API,具體詳情,請點擊「閱讀原文」訪問聲網官方文檔。如在升級、集成中遇到問題,可在 RTC 開發者社區提問。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章