直播播放器

本文介绍Android应用端,直播播放器的使用流程。

使用流程

  1. 创建直播播放器。

  2. 配置播放器的渲染窗口并设置播放器回调。

  3. 按需配置播放器的其他参数。例如:软硬解码偏好、视频画面模式等。

  4. 调用QueryLiveStreaming接口获取IPC设备的直播开播rtmp地址,并作为数据源设置给播放器。

  5. 开始播放。

  6. 停止播放。

  7. 销毁直播播放器。

使用示例

// 构造播放器实例
LVLivePlayer player = new LVLivePlayer(getApplicationContext());

// 设置textureview,可使用SDK提供的带画面缩放的ZoomableTextureView组件, 画面不旋转
player.setTextureView(zoomableTextureView, LVVideoRotationMode.LV_VIDEO_ROTATE_0_CLOCKWISE);
// 设置必要的监听
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() {
    }
});

// 设置数据源,数据源为从服务端下发的直播rtmp播放地址
player.setDataSource("rtmp://xx.xx.xx.xx/live", );23
// 设置解码策略为硬解码优先
player.setDecoderStrategy(LVDecoderStrategy.LV_DECODER_STRATEGY_HARDWARE_FIRST);
// 设置画面模式为保持宽高
player.setVideoScalingMode(LVVideoScalingMode.LV_VIDEO_SCALING_MODE_FIT);
// 设置播放停止时保留最后一帧画面
player.setPlayerStoppedDrawingMode(LVPlayerStoppedDrawingMode.LV_ALWAYS_KEEP_LAST_FRAME);
// 如果需要设置播放器的画面渲染模式为填充画面,取消下一行代码注释
// player.setVideoScalingMode(LVVideoScalingMode.LV_VIDEO_SCALING_MODE_FILL);
...
// 开始播放
player.start();
...
// 停止播放
player.stop();
...
// 释放播放器资源
player.release();