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();