Skip to content
On this page

ExoPlayer

1. Introduction

Please enter dashboard of Sigma DRM to get integration information as image below

get_customer_info

2. Require

Requirment

  • Operating system: Android 16+

  • Install SigmaPlayer:

    • Add a repositories in the build.gradle file of your app module.
    java
    repositories{
            maven
                {
                    url "https://maven.sigmadrm.com"
                }
            }
        }
    • Add a dependency in the build.gradle file of your app module. The following will add a dependency to the full library:
    java
    implementation 'com.sigma.drm:sigma-player-core:2.9.6'
    implementation 'com.sigma.drm:sigma-player-hls:2.9.6'
    implementation 'com.sigma.drm:sigma-player-ui:2.9.6'
    implementation 'com.sigma.drm:sigma-player-dash:2.9.6'
    implementation 'com.sigma.drm:sigma-player-smoothstreaming:2.9.6'
    • Add support Java version 1.8 by add compileOptions in build.gradle file of your app module.
    java
    compileOptions {
              targetCompatibility JavaVersion.VERSION_1_8
            }
    • Add permission to access internet by add user permission.
    xml
    <uses-permission android:name="android.permission.INTERNET" />

3. Integrate SigmaPlayer

3.1. Initiate PlayerView

java
// Import PlayerView
  import com.google.android.exoplayer2.ui.PlayerView;
  ...

  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      playerView = findViewById(R.id.player_view);
      playerView.setControllerVisibilityListener(this);
      playerView.setErrorMessageProvider(new PlayerErrorMessageProvider());
      playerView.requestFocus();
  }

3.2. Config Sigma Player

java
// Import SigmaHelper
import com.sigma.drm.SigmaHelper;
...

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*...*/

        SigmaHelper.instance().configure(MERCHANT_ID, APP_ID, USER_ID, SESSION_ID);
    }

Integration Information

PropsDescriptionTypeExample
MERCHANT_IDIdentify of merchant that get from cmsStringthudomultimedia
APP_IDIdentify of app that get from cmsStringRedTV
USER_IDIdentify of user that get from merchant applicationStringusername_1
SESSION_IDIdentify of session that get from merchant applicationStringsession_1

3.3 Initialize Player

java
private void initializePlayer() {
    if (player == null) {
        mediaSource = createMediaSource(uri, "", null);

        if (mediaSource == null) {
            return;
        }
        DefaultTrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory());

        RenderersFactory renderersFactory = getRenderersFactory();
        DefaultDrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null;
        player = ExoPlayerFactory.newSimpleInstance(this, renderersFactory, trackSelector, drmSessionManager);
        player.setAudioAttributes(AudioAttributes.DEFAULT, /* handleAudioFocus= */ true);
        player.setPlayWhenReady(true);
        playerView.setPlayer(player);
        playerView.setPlaybackPreparer(this);
    }

    boolean haveStartPosition = startWindow != C.INDEX_UNSET;
    if (haveStartPosition) {
        player.seekTo(startWindow, startPosition);
    }
    player.prepare(mediaSource, !haveStartPosition, false);
}

3.4 Create Media Source

java
private MediaSource createMediaSource(
    Uri uri, String extension, DrmSessionManager<?> drmSessionManager) {
    @C.ContentType int type = Util.inferContentType(uri, extension);
    switch (type) {
        case C.TYPE_DASH:
            return new DashMediaSource.Factory(buildDataSourceFactory())
                .createMediaSource(uri);
        case C.TYPE_SS:
            return new SsMediaSource.Factory(buildDataSourceFactory())
                .createMediaSource(uri);
        case C.TYPE_HLS:
            return new HlsMediaSource.Factory(buildDataSourceFactory())
                .setPlaylistParserFactory(new DefaultHlsPlaylistParserFactory())
                .createMediaSource(uri);
        case C.TYPE_OTHER:
            return new ExtractorMediaSource.Factory(buildDataSourceFactory()).createMediaSource(uri);
        default:
            throw new IllegalStateException("Unsupported type: " + type);
    }
}

3.5 Create Factory

java
private RenderersFactory getRenderersFactory() {
    if (renderersFactory == null) {
        renderersFactory = new DefaultRenderersFactory(getApplicationContext())
            .setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON);
    }
    return renderersFactory;
}

/** Returns a {@link DataSource.Factory}. */
public DataSource.Factory buildDataSourceFactory() {
    DefaultDataSourceFactory upstreamFactory =
        new DefaultDataSourceFactory(this, buildHttpDataSourceFactory());
    return upstreamFactory;
}

/** Returns a {@link HttpDataSource.Factory}. */
public HttpDataSource.Factory buildHttpDataSourceFactory() {
    return new DefaultHttpDataSourceFactory(Util.getUserAgent(this, "SigmaDRM"));
}

4. Sample Code

Sample source code