related but old
How does Android determine which video codec to select?
What is the list of native libraries in frameworks/av/media/codec2/vndk/C2Store.cpp? These libraries are not mentioned in /etc/media_codecs.xml.
If a hardware-accelerated codec is unavailable or unable to efficiently decode the video (e.g., due to unsupported video parameters), does Android fallback to using a software codec?
I'm developing a simple app to play a video from a URL, and I'm trying to understand the codec decision tree.
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.media3.common.MediaItem
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.util.EventLogger
import com.example.app.databinding.ActivityMediaPlayerBinding
class MediaPlayerActivity : AppCompatActivity() {
private lateinit var binding: ActivityMediaPlayerBinding
private lateinit var player : ExoPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMediaPlayerBinding.inflate(layoutInflater)
setContentView(binding.root)
val url = intent.getStringExtra("url")
player = ExoPlayer.Builder(this).build()
player.addAnalyticsListener(EventLogger())
binding.playerView.player = player
val mediaItem = MediaItem.fromUri(url!!)
player.setMediaItem(mediaItem)
player.prepare()
player.play()
}