播放器概述

物联网视频服务,在Android应用端针对视频播放功能,开发了支持HLS播放协议的云端录像播放器。本文介绍HLS云端录像播放器的基本信息。

背景信息

HLS播放协议类型播放器的基本信息和功能列表,请参见视频播放概述

播放器类型

HLS播放协议的播放器,支持MPEG-TS和fMP4容器,AES-128加密方式,包括以下两类播放器:

  • 自研HLS播放器

  • ExoPlayer HLS播放器

推荐您使用自研HLS播放器。

示例代码

请参考如下示例代码,了解自研HLS播放器和ExoPlayer HLS播放器的使用方法。

自研HLS播放器

HlsPlayer player = new HlsPlayer(getApplicationContext());
// 设置Textureview
player.setTextureView(textureView);

// 设置错误监听
player.setOnErrorListener(new OnErrorListener() {
    @Override
    public void onError(PlayerException exception){
        makeToast("errorcode: " + exception.getCode() + "\n" + exception.getMessage());
    }
});
// 设置状态监听
player.setOnPlayerStateChangedListener(new OnPlayerStateChangedListener() {
    @Override
    public void onPlayerStateChange(int playerState){
        switch (playerState) {
            case Player.STATE_BUFFERING:
                break;
            case Player.STATE_IDLE:
                break;
            case Player.STATE_READY:
                break;
            case Player.STATE_ENDED:
                break;
            default:
                break;
        }
    }
});

// 设置m3u8地址
player.setDataSource("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear3/prog_index.m3u8");
// 设置数据源就绪监听器
player.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(){
        // 数据源就绪后开始播放
        player.start();
    }
});
player.prepare();
...
// 暂停播放
player.pause();
...
// 恢复播放
player.start();
...
// 停止播放
player.stop();
...
// 释放播放器资源
player.release();   
...

ExoPlayer HLS播放器

ExoHlsPlayer player = new ExoHlsPlayer(getApplicationContext());
// 设置textureview
player.setTextureView(textureView);
// 也可以使用Exo的SimpleExoPlayerView来作为播放器的UI组件
// simpleExoPlayerView.setPlayer(player.getExoPlayer());
// simpleExoPlayerView.requestFocus();

// 设置错误监听
player.setOnErrorListener(new OnErrorListener() {
    @Override
    public void onError(PlayerException exception){
        makeToast("errorcode: " + exception.getCode() + "\n" + exception.getMessage());
    }
});
// 设置状态监听
player.setOnPlayerStateChangedListener(new OnPlayerStateChangedListener() {
    @Override
    public void onPlayerStateChange(int playerState){
        switch (playerState) {
            case Player.STATE_BUFFERING:
                break;
            case Player.STATE_IDLE:
                break;
            case Player.STATE_READY:
                break;
            case Player.STATE_ENDED:
                break;
            default:
                break;
        }
    }
});

// 设置m3u8地址
player.setDataSource("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear3/prog_index.m3u8");
// 设置数据源就绪监听器
player.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(){
        // 数据源就绪后开始播放
        player.start();
    }
});
player.prepare();
...
// 暂停播放
player.pause();
...
// 恢复播放
player.start();
...
// 停止播放
player.stop();
...
// 释放播放器资源
player.release();   
...
// 截图
textureview.getBitmap();