保利威文档中心

幫助中心

7 影片投放

更新時間:2026-05-21 18:34:06

影片投放功能用於將點播影片投放至大螢幕裝置播放。舊版點播 Android SDK 的投放能力由 Demo 層提供,開發者可參考 Demo 中的投放模組原始碼整合至自己的專案中。

7.1 適用版本與限制

  • 點播 Android SDK 自 2.15.0 起,投放 SDK 移至 Demo 層,開發者需自行引入 Demo 中的投放模組原始碼。
  • Demo 自 2.24.2 起,投放功能服務替換為自研投放服務。
  • 本文範例以非加密影片投放為主,舊版投放文件中的加密影片投放能力不在本文範例範圍內。
  • 開啟防錄影功能後,投放功能不可使用。
  • 投放發送端與接收端需處於可互通的網路環境,接收端需支援對應的投放能力。

7.2 整合投放依賴

在專案的 build.gradle 中加入投放依賴:

// 投屏 SDK
implementation "net.polyv.android:media-cast-adapter-rx:1.0.5"

7.3 引入 Demo 投放原始碼

將 Demo 中 com/easefun/polyvsdk/cast 目錄下的投放相關原始碼引入專案。

// com/easefun/polyvsdk/cast
├── IPLVScreencastListener.java // 投屏播放状态监听器
├── PolyvAllCast.java // 自研投屏能力封装类
├── PolyvIUIUpdateListener.java // UI 状态回调监听器
├── PolyvScreencastManager.java // 投屏功能管理类
└── widget
    ├── PolyvScreencastSearchLayout.java // 搜索投屏设备的视图
    └── PolyvScreencastStatusLayout.java // 投屏状态管理视图

其中,PolyvScreencastManager 是業務端主要使用的投放管理類別,封裝了裝置搜尋、投放播放、播放控制與狀態回呼。

7.4 初始化投放管理器

在播放頁面中取得 PolyvScreencastManager 實例,並設定狀態回呼。

private PolyvScreencastManager screencastManager;

private void initScreencastManager() {
    screencastManager = PolyvScreencastManager.getInstance(this);
    screencastManager.setUIUpdateListener(new PolyvIUIUpdateListener() {
        @Override
        public void onUpdateState(int state, Object object) {
            // 根据 state 更新设备搜索、播放状态、播放进度或错误提示
        }

        @Override
        public void onUpdateText(String msg) {
            // 展示投屏提示文案或错误信息
        }
    });

    screencastManager.initService();
}

7.5 搜尋投放裝置

呼叫 browse() 開始搜尋裝置。搜尋結束後,可透過 getInfos() 取得當前掃描到的裝置列表。

// 开始搜索设备
screencastManager.browse();

// 获取搜索到的设备列表
List<PLVMediaCastDevice> devices = screencastManager.getInfos();

搜尋結果會透過 PolyvIUIUpdateListener#onUpdateState 回呼回傳。常用狀態包括:

狀態 說明
STATE_SEARCH_SUCCESS 裝置搜尋成功
STATE_SEARCH_ERROR 裝置搜尋失敗
STATE_SEARCH_NO_RESULT 未搜尋到可用裝置

7.6 發起投放播放

從搜尋結果中選擇目標裝置後,呼叫 playNetMedia(device, resource, startSeconds) 發起投放播放。

// device:从 getInfos() 获取的投屏设备
// mediaResource:投屏播放资源,请按 Demo 中当前视频信息构建
// startSeconds:起播位置,单位为秒
screencastManager.playNetMedia(device, mediaResource, startSeconds);

發起投放後,可透過 getConnectInfos() 取得當前連線中的投放裝置。

PLVMediaCastDevice currentDevice = screencastManager.getConnectInfos();

7.7 播放控制

投放播放開始後,可在發送端控制接收端播放狀態。

// 暂停
screencastManager.pause();

// 恢复播放
screencastManager.resume();

// 跳转到指定进度,单位为秒
screencastManager.seekTo(progress);

// 设置音量,范围 0~100
screencastManager.setVolume(percent);

// 增加音量
screencastManager.volumeUp();

// 减少音量
screencastManager.volumeDown();

// 停止投屏播放
screencastManager.stopPlay();

7.8 監聽播放狀態

投放播放狀態、播放進度與異常資訊會透過 PolyvIUIUpdateListener#onUpdateState 回傳。常用狀態包括:

狀態 說明
STATE_PLAY 投放播放中
STATE_PAUSE 投放已暫停
STATE_STOP 投放已停止
STATE_COMPLETION 投放播放完成
STATE_POSITION_UPDATE 投放播放進度更新,object 為當前進度
STATE_PLAY_ERROR 投放播放異常,object 為錯誤資訊
STATE_LOADING 投放載入中

7.9 釋放投放資源

播放頁面退出或不再使用投放功能時,呼叫 release() 釋放投放資源。

@Override
protected void onDestroy() {
    if (screencastManager != null) {
        screencastManager.release();
    }
    super.onDestroy();
}

7.10 常見問題

開啟防錄影後為什麼不能投放?

防錄影功能與投放功能存在衝突。開啟防錄影後,投放功能不可使用。

搜尋不到投放裝置怎麼辦?

請確認發送端與接收端處於可互通的網路環境,並確認接收端支援對應投放能力。若仍無法搜尋到裝置,可參考 Demo 中 PolyvScreencastSearchLayout 的裝置搜尋邏輯排查。

是否必須使用 Demo 的投放 UI?

不是。Demo 提供了搜尋裝置檢視與投放狀態檢視,開發者可以直接複用,也可以根據業務 UI 自行實作。若自行實作 UI,建議保留 PolyvScreencastManager 的搜尋、播放控制與狀態回呼邏輯。

联系客服,在线咨询