本文介绍Android应用端,点播播放器的使用流程。
使用流程
创建点播播放器。
配置播放器的渲染窗口及设置播放回调。
根据需求配置播放器的其他参数。例如:软硬解码偏好、视频画面模式等。
设置播放数据源。
按文件播放设备录像:调用QueryDeviceVodUrl接口,获取本地NVR设备或IPC设备的存储卡中,指定录像文件名的录像文件rtmp播放地址,并作为数据源设置给播放器。
按时间播放设备录像:调用QueryDeviceVodUrlByTime接口,获取本地NVR设备或IPC设备存储卡中,指定录像时间范围的录像文件rtmp播放地址,并作为数据源设置给播放器。
按文件播放云存录像:调用QueryRecordUrl接口查询云端录像文件的hls播放地址,并作为数据源设置给播放器。
开始播放。
暂停、恢复、seek操作。
停止播放。
销毁点播播放器。
使用示例
设备录像点播
// 构造播放器实例
LVVodPlayer player = new LVVodPlayer(getApplicationContext());
// 设置textureview,可使用SDK提供的带画面缩放的ZoomableTextureView组件
player.setTextureView(zoomableTextureView);
// 设置必要的监听
player.setPlayerListener(new ILVPlayerListener() {
@Override
public void onError(LVPlayerError error) {
// 播放报错
}
@Override
public void onPlayerStateChange(LVPlayerState state) {
Log.d(TAG, "play state= " + state.name());
switch (state) {
case STATE_BUFFERING:
// 显示正在缓冲
break;
case STATE_IDLE:
break;
case STATE_READY:
// 隐藏正在缓冲
updatePlayInfo();
break;
case STATE_ENDED:
// 隐藏正在缓冲
break;
default:
break;
}
}
@Override
public void onRenderedFirstFrame(int elapsedTimeInMs) {
// 显示回调,elapsedTimeInMs为出图耗时
}
@Override
public void onVideoSizeChanged(int width, int height) {
// 宽高变化回调
}
@Override
public void onStandardSeiInfoUpdate(byte[] buffer, int length, long timeStamp) {
// 码流SEI数据帧回调
}
@Override
public void onVideoJitterBufferEmpty() {
}
});
// 设置播放完成监听
player.setVodCompletionListener(new ILVVodPlayerCompletionListener() {
@Override
public void onCompletion() {
// 播放完成
}
});
// 设置数据源,从云端获取的设备录像点播rtmp地址及解密密钥
player.setDataSource("rtmp://xx.xx.xx.xx/vod/xxx", true, decryptIvBase64String, decryptKeyBase64String);
// 设置解码策略为硬解码优先
player.setDecoderStrategy(LVDecoderStrategy.LV_DECODER_STRATEGY_HARDWARE_FIRST);
// 设置画面模式为保持宽高
player.setVideoScalingMode(LVVideoScalingMode.LV_VIDEO_SCALING_MODE_FIT);
...
// 开始播放
player.start();
...
// 暂停
player.pause();
...
// 恢复
player.resume();
...
// 停止播放
player.stop();
...
// 释放播放器资源
player.release();
云存录像点播
// 构造播放器实例
LVVodPlayer player = new LVVodPlayer(getApplicationContext());
// 设置textureview,可使用SDK提供的带画面缩放的ZoomableTextureView组件
player.setTextureView(zoomableTextureView);
// 设置必要的监听
player.setPlayerListener(new ILVPlayerListener() {
@Override
public void onError(LVPlayerError error) {
// 播放报错
}
@Override
public void onPlayerStateChange(LVPlayerState state) {
Log.d(TAG, "play state= " + state.name());
switch (state) {
case STATE_BUFFERING:
// 显示正在缓冲
break;
case STATE_IDLE:
break;
case STATE_READY:
// 隐藏正在缓冲
updatePlayInfo();
break;
case STATE_ENDED:
// 隐藏正在缓冲
break;
default:
break;
}
}
@Override
public void onRenderedFirstFrame(int elapsedTimeInMs) {
// 显示回调,elapsedTimeInMs为出图耗时
}
@Override
public void onVideoSizeChanged(int width, int height) {
// 宽高变化回调
}
@Override
public void onStandardSeiInfoUpdate(byte[] buffer, int length, long timeStamp) {
// 码流SEI数据帧回调
}
@Override
public void onVideoJitterBufferEmpty() {
}
});
// 设置播放完成监听
player.setVodCompletionListener(new ILVVodPlayerCompletionListener() {
@Override
public void onCompletion() {
// 播放完成
}
});
// 设置数据源,从云端获取的hls播放地址
player.setDataSource("https://xx.xx.xx.xx/hls/xx.m3u8");
// 设置解码策略为硬解码优先
player.setDecoderStrategy(LVDecoderStrategy.LV_DECODER_STRATEGY_HARDWARE_FIRST);
// 设置画面模式为保持宽高
player.setVideoScalingMode(LVVideoScalingMode.LV_VIDEO_SCALING_MODE_FIT);
...
// 开始播放
player.start();
...
// 暂停
player.pause();
...
// 恢复
player.resume();
...
// 停止播放
player.stop();
...
// 释放播放器资源
player.release();
文档内容是否对您有帮助?