3-视频播放
更新時間:2024-09-04 16:17:16
1.播放器
播放器的對外核心介面為 IPLVMediaPlayer,該介面對外的實作類別有 PLVMediaPlayer 和 PLVVideoView,差異如下:
- PLVMediaPlayer:播放器核心類別,提供播放器的完整功能,但不包含渲染的介面
- PLVVideoView:封裝了 PLVMediaPlayer,預設添加了渲染的介面,可以當作一個 View 來使用
2.初始化
您可以透過建構方法直接建立播放器實例,例如:
new PLVMediaPlayer();
new PLVVideoView(context);
另外,由於 PLVVideoView 繼承自 FrameLayout,因此您也可以在佈局檔案中直接宣告 PLVVideoView,隨後在程式碼中透過 findViewById() 取得實例。
3.設定資料來源
透過呼叫介面 setMediaResource() 設定資料來源
/**
* 设置播放资源
*/
fun setMediaResource(mediaResource: PLVMediaResource)
在呼叫該介面後,預設會自動開始播放,您也可以透過播放參數配置來控制不自動啟動播放
4.播放參數配置
透過呼叫介面 setPlayerOption() 設定播放參數
/**
* 设置播放参数
*/
fun setPlayerOption(options: List<PLVMediaPlayerOption>)
PLVMediaPlayerOptionEnum 類別中提供了一些常用的播放參數,您可以直接引用其中的常數,例如:
// 开启精准seek的参数
PLVMediaPlayerOptionEnum.ENABLE_ACCURATE_SEEK.value("1")
對於重複設定的參數,新設定的參數會覆蓋舊的參數;如果想要清空參數,可以在 value 欄位中傳入空字串
5.播放控制
播放器提供了一系列的播放控制介面,例如:
/**
* 开始播放
*/
fun start()
/**
* 暂停播放
*/
fun pause()
/**
* 跳转播放进度到指定位置
* @param position 指定位置,单位:毫秒
*/
fun seek(position: Long)
更多控制操作可以參考 IPLVMediaPlayer 以及它的父介面 IPLVMediaPlayerControl
6.回呼
播放器的狀態、事件回呼可以透過回呼註冊中心進行監聽,包括:
- IPLVMediaPlayerBusinessListenerRegistry:播放器業務回呼註冊中心
- IPLVMediaPlayerEventListenerRegistry:播放器事件回呼註冊中心
- IPLVMediaPlayerStateListenerRegistry:播放器狀態回呼註冊中心
以監聽播放/暫停狀態為例,可以透過以下方式進行監聽:
State<PLVMediaPlayerPlayingState> playingState = mediaPlayer.getStateListenerRegistry().getPlayingState();
MutableObserver<PLVMediaPlayerPlayingState> observer = playingState.observe(new Function1<PLVMediaPlayerPlayingState, Unit>() {
@Override
public Unit invoke(PLVMediaPlayerPlayingState playingState) {
// 处理逻辑
return null;
}
});
// 在不需要继续监听时,可以取消监听
observer.dispose();
7.銷毀
播放結束後不再使用播放器時,應銷毀播放器:
mediaPlayer.destroy();
