class VideoActivity : AppCompatActivity(), SurfaceTextureReadyCallback {
private lateinit var sbsVideoSurfaceRenderer: SbsVideoSurfaceRenderer
override fun onSurfaceTextureReady(surfaceTexture: SurfaceTexture?) {
// Initialize and pass in surface texture to the SBSVideoSurfaceRenderer
if (sbsVideoSurfaceRenderer == null) {
sbsVideoSurfaceRenderer = SbsVideoSurfaceRenderer(
private fun configureExoplayer(surfaceTexture: SurfaceTexture) {
// Note: This is appropriate for 2x2 textures on Hydrogen One.
exoPlayer.setVideoSurface(Surface(surfaceTexture))
val userAgent = Util.getUserAgent(this, "exoplayer2example")
"https://dev.streaming.leialoft.com/out/v1/08cd49f09fbc4a1e9c063424fa0bfc00/7845cda1bdd5494db13a24f5d13374ea/adacb4edf0434177ae441f124d989fe7/index.mpd"
val dataSourceFactory: DataSource.Factory = DefaultHttpDataSourceFactory(userAgent)
val videoSource: MediaSource =
DashMediaSource.Factory(dataSourceFactory).createMediaSource(uri)
val loopingSource = LoopingMediaSource(videoSource)
exoPlayer.prepare(loopingSource)