Skip to content

Instantly share code, notes, and snippets.

@halilozel1903
Created September 14, 2022 20:11
Show Gist options
  • Select an option

  • Save halilozel1903/3ada47f59233f3be3c368248b9ba16d2 to your computer and use it in GitHub Desktop.

Select an option

Save halilozel1903/3ada47f59233f3be3c368248b9ba16d2 to your computer and use it in GitHub Desktop.
How to play .mp4 in ExoPlayer?
package com.halil.ozel.exoplayerdashsample
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.source.MediaSource
import com.google.android.exoplayer2.source.ProgressiveMediaSource
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource
import com.halil.ozel.exoplayerdashsample.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var exoPlayer: ExoPlayer? = null
private var playbackPosition = 0L
private var playWhenReady = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
preparePlayer()
}
private fun preparePlayer() {
exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer?.let { exo ->
exo.playWhenReady = true
binding.playerView.player = exo
exo.setMediaSource(setMediaType())
exo.seekTo(playbackPosition)
exo.playWhenReady = playWhenReady
exo.prepare()
}
}
private fun releasePlayer() {
exoPlayer?.let { player ->
playbackPosition = player.currentPosition
playWhenReady = player.playWhenReady
player.release()
exoPlayer = null
}
}
private fun setMediaType(): MediaSource {
val defaultHttpDataSourceFactory = DefaultHttpDataSource.Factory()
val mediaItem = MediaItem.fromUri(URL)
return ProgressiveMediaSource.Factory(defaultHttpDataSourceFactory)
.createMediaSource(mediaItem)
}
override fun onStop() {
super.onStop()
releasePlayer()
}
override fun onPause() {
super.onPause()
releasePlayer()
}
override fun onDestroy() {
super.onDestroy()
releasePlayer()
}
companion object {
const val URL =
"https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment