全部產品
Search
文件中心

:功能使用

更新時間:Aug 06, 2025

本文主要介紹了Windows端直播推流SDK的功能和使用方法。包括SDK的主要介面、基本使用流程說明,同時還提供了相關功能的使用樣本。旨在協助開發人員更好地理解和應用SDK進行直播推流操作。

功能特性

  • 使用視頻H.264編碼以及音頻OPUS\AAC編碼。

  • 使用視頻H.265編碼以及音頻OPUS\AAC編碼。

  • 支援碼控、解析度、顯示模式等自訂配置。

  • 支援多種網路攝影機相關操作。

  • 支援錄屏直播。

  • 支援自訂YUV、PCM等外部音視頻輸入。

  • 支援多路混流功能。

  • 支援純音視頻推流以及後台推流。

  • 支援背景音樂及其相關操作。

  • 支援自動重連、異常處理。

  • 支援音頻3A演算法。

  • 增加視頻軟編、硬編切換邏輯,提升編碼模組穩定性。

使用流程

基本使用流程如下:

  1. 配置推流參數

  2. 推流

功能使用

配置推流參數

AlivcLivePushConfig可以實現對推流參數的配置,推流配置對應參數都有預設值。基礎推流建議採用預設值,即您可以進行簡單初始化,不做配置。

AlivcLivePushConfig config;

推流(網路攝影機推流)

AlivcLivePusher為使用推流SDK推流的核心類,提供初始化操作、推流回調、網路攝影機預覽、推流量控制、推流過程中的參數調節等功能。

  1. 初始化。

    在配置好推流參數後,可以使用推流SDK的init方法進行初始化。範例程式碼如下:

    AlivcLivePushConfig config;
    pusher->init(config);
  2. 註冊推流回調。

    推流回調分為三種:

    • Info:主要做提示和狀態檢測使用。

    • Error:錯誤回調。

    • Network:主要為網路相關。

    使用者通過對應的回調通知,當發生對應的類型的事件時,相應的回呼函數被觸發運行。範例程式碼如下:

    pusher->setLivePushErrorListener(errorListener);
    pusher->setLivePushInfoListener(errorListener);
    pusher->setLivePushNetworkListener(errorListener);

  3. 開始預覽。

    livePusher對象初始化及回調配置完成之後,可以進行開始預覽操作。範例程式碼如下:

    pusher->startPreview(view, width, height);

  4. 開始推流。

    pusher->startPush(url);

常用推流量控制

推流量控制主要包括開始推流、停止推流、停止預覽、重新推流、暫停推流、恢複推流、銷毀推流等操作,使用者可以根據業務需求添加按鈕進行操作。

pusher->stopPush();

錄屏推流(螢幕畫面分享推流)

錄屏推流即螢幕畫面分享推流,實現過程為擷取共用源列表,然後指定共用源進行推流。具體操作:

  1. 擷取共用源列表。

    pusher->getScreenShareSourceInfo();

  2. 開始共用推流。

    pusher->startScreenShareByDesktopId(desktopId);
    說明
    • desktopId:案頭Id(可通過GetScreenShareSourceInfo介面擷取)。

碼率控制

碼率控制配置可通過有兩種模式。

  1. 通過初始化參數enableBitrateControl控制。

    config.enableBitrateControl = true;
    說明

    開啟後,碼率將在SDK內部設定的目標碼率和最小碼率之間自適應調整,建議開啟(關閉後,碼率將固定在初始碼率,在網路情況不穩定的情況下,可能造成播放卡頓,請慎用)。

  2. 自訂碼率。

    通過初始碼率、最小碼率和目標碼率(mInitialVideoBitrate,mMinVideoBitrate,mTargetVideoBitrate)參數進行配置。

    config.mTargetVideoBitrate = 1400; //目標碼率1400kbps
    config.mMinVideoBitrate = 600; //最小碼率600kbps
    config.mInitialVideoBitrate = 1000; //初始碼率1000kbps

    各參數取值如下:

    解析度

    初始碼率 initialVideoBitrate

    最小碼率 minVideoBitrate

    目標碼率 targetVideoBitrate

    360P

    600

    300

    1000

    480P

    800

    300

    1200

    540P

    1000

    600

    1400

    720P

    1500

    600

    2000

    1080P

    1800

    1200

    2500

    解析度

    初始碼率 initialVideoBitrate

    最小碼率 minVideoBitrate

    目標碼率 targetVideoBitrate

    360P

    400

    200

    600

    480P

    600

    300

    800

    540P

    800

    300

    1000

    720P

    1000

    300

    1200

    1080P

    1500

    1200

    2200

    說明

    目標碼率/最小碼率/初始碼率如果不進行配置,那麼SDK會根據解析度自動分配合適的碼率進行發送,預設配置給網路攝影機。

圖片推流

為了更好的使用者體驗,推流SDK提供了後台圖片推流和碼率過低時進行圖片推流的設定。

當SDK退至後台時預設暫停推流視頻,只推音頻流,此時可以進行圖片推流。例如,在圖片上提醒使用者主播離開片刻,稍後回來

config.mPausePushImagePath = "退後台png圖片路徑";//設定使用者後台推流的圖片

回調監聽

推流異常與錯誤可通過推流SDK回調進行接收處理。Windows推流SDK主要包含以下回調:

回調類型

回調類名

推流回調

AlivcLivePushInfoListener

網路相關回調

AlivcLivePushNetworkListener

錯誤回調

AlivcLivePushErrorListener

推流回調

推流回調用於向App通知SDK相應狀態,包括預覽開始、渲染第一幀視頻、發送第一幀音視頻流、推流開始、推流停止等回調。

  • onPushStarted、onFirstFramePushed:表示SDK推流成功。

  • onPushStarted:表示串連服務端成功。

  • onFirstFramePushed:表示發送第一幀音視頻流成功。

網路相關回調

網路相關回調用於向App通知SDK相應網路狀態和連結狀態。

  • onConnectFail:表示推流失敗,建議檢查推流地址是否非法、是否存在非法字元、鑒權是否有問題、是否超過最大推流並發限制、是否在禁推黑名單中等,確定推流地址合法且可用後再嘗試推流。其中具體錯誤碼有0x30020901 ~ 0x30020905, 0x30010900 ~ 0x30010901。

  • onConnectionLost:連結斷開回調,連結斷開後SDK內部會自動重連,回拋onReconnectStart,如果超過最大重連次數(config.connectRetryCount)後推流連結還是沒有恢複,會回拋onReconnectError。

  • onNetworkPoor:網路慢回調,當收到此回調說明當前網路對於推流的支撐度不足,此時推流仍在繼續、沒有中斷。您可以在此處理自己的商務邏輯,比如UI提醒使用者。

  • onNetworkRecovery:網路恢複回調。

  • onReconnectError:重連失敗回調,表示重連失敗,建議檢查當前網路,待網路恢複時,重新推流。一般情況下,中途斷網時間長度在AlivcLivePushConfig設定的重連逾時時間長度和次數範圍之內,SDK會進行自動重連,重連成功之後將繼續推流。斷網時間長度超出AlivcLivePushConfig設定的重連逾時時間長度和次數範圍時,SDK自動重連失敗,此時會回調onReconnectError,在等到網路恢複之後調用reconnectAsync介面進行重連。同時播放器也要配合做重連操作。若您使用阿里雲播放器,建議播放器收到逾時通知之後短暫延時5s後再做重連操作。

    說明
    • 建議您在SDK外部做網路監測。

    • 主播端和播放端在用戶端無法進行直接通訊,需要配合服務端使用。比如主播端斷網,服務端會收到CDN的推流中斷回調,此時可以推送給播放端,播放端再做出相應處理。恢複推流同理。

    • 阿里雲播放器重連需要先停止播放再開始播放。調用介面順序stop>prepareAndPlay。更多阿里雲播放器資訊,請參見SDK簡介

  • onSendDataTimeout:送資料逾時回調,建議檢查當前網路,待網路恢複時,結束推流後重新開始推流。

  • onPushURLAuthenticationOverdue:推流地址鑒權即將到期會回調,如果您的推流開啟了推流鑒權功能(推流URL中帶有auth_key),我們會對推流URL做出校正。在推流URL到期前約1min,您會收到此回調,實現該回調後,您需要回傳一個新的推流URL,以此保證不會因為推流地址到期而導致推流中斷。

錯誤回調

  • onSystemError:系統裝置異常回調,需要銷毀引擎重新嘗試。

  • onSDKError:SDK錯誤回調,需要根據錯誤碼做不同的處理:

    • 如果錯誤碼是805438211,表示裝置效能差,編碼和渲染幀率過低,需要給主播提示,並在app層停掉處理耗時間長度的商務邏輯(比如進階美顏、動畫等)。

    • 您需要特別處理App沒有麥克風許可權和沒有網路攝影機許可權的回調,App沒有麥克風許可權錯誤碼為268455940,App沒有網路攝影機許可權錯誤碼為268455939。

    • 其他的暫時都只打日誌,不做其他額外操作。

常用類列表

說明

AlivcLivePushConfig

推流初始配置

AlivcLivePusher

推流功能類

AlivcLivePusherErrorListener

錯誤回調

AlivcLivePusherNetworkListener

網路相關通知回調

AlivcLivePusherInfoListener

推流相關資訊回調