All Products
Search
Document Center

:Overview

Last Updated:Mar 01, 2022

LinkVisual SDK for Android provides the in-house HTTP Live Streaming (HLS) player and ExoPlayer HLS player to play recordings on IoT Platform based on HLS. This topic describes the basic information about the HLS players.

Background information

For more information about the basic description and features of the HLS players, see Overview.

Player types

The HLS players support Moving Picture Experts Group Transport Stream (MPEG-TS) and fragmented MP4 (fMP4) containers and Advanced Encryption Standard 128-bit (AES-128) encryption. The following two types of HLS players are supported:

  • In-house HLS player

  • ExoPlayer HLS player

We recommend that you use the in-house HLS player.

Sample code

The following sample code provides examples on how you can use the in-house HLS player and ExoPlayer HLS player.

In-house HLS player

HlsPlayer player = new HlsPlayer(getApplicationContext());
// Set a TextureView object.
player.setTextureView(textureView);

// Set a listener to listen for errors.
player.setOnErrorListener(new OnErrorListener() {
    @Override
    public void onError(PlayerException exception){
        makeToast("errorcode: " + exception.getCode() + "\n" + exception.getMessage());
    }
});
// Set a player status listener.
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;
        }
    }
});

// Set an M3U8 URL.
player.setDataSource("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear3/prog_index.m3u8");
// Set a listener to listen for whether the data source is ready.
player.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(){
        // Start playback when the data source is ready.
        player.start();
    }
});
player.prepare();
...
// Pause the playback.
player.pause();
...
// Resume the playback.
player.start();
...
// Stop the playback.
player.stop();
...
// Release player resources.
player.release();   
...

ExoPlayer HLS player

ExoHlsPlayer player = new ExoHlsPlayer(getApplicationContext());
// Set a TextureView object.
player.setTextureView(textureView);
// You can also use the SimpleExoPlayerView object of ExoPlayer as the user interface (UI) component of the player.
// simpleExoPlayerView.setPlayer(player.getExoPlayer());
// simpleExoPlayerView.requestFocus();

// Set a listener to listen for errors.
player.setOnErrorListener(new OnErrorListener() {
    @Override
    public void onError(PlayerException exception){
        makeToast("errorcode: " + exception.getCode() + "\n" + exception.getMessage());
    }
});
// Set a player status listener.
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;
        }
    }
});

// Set an M3U8 URL.
player.setDataSource("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear3/prog_index.m3u8");
// Set a listener to listen for whether the data source is ready.
player.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(){
        // Start playback when the data source is ready.
        player.start();
    }
});
player.prepare();
...
// Pause the playback.
player.pause();
...
// Resume the playback.
player.start();
...
// Stop the playback.
player.stop();
...
// Release player resources.
player.release();   
...
// Take snapshots.
textureview.getBitmap();