Libvlcjni.so | Kmp External Codec

actual fun play() mediaPlayer.play() actual fun stop() mediaPlayer.stop() actual fun isPlaying(): Boolean = mediaPlayer.isPlaying

implementation("org.videolan.android:libvlc-all:3.5.0") This includes libvlcjni.so (armeabi-v7a, arm64-v8a, x86, x86_64) automatically. kmp external codec libvlcjni.so

Enable verbose logging:

// androidMain/kotlin/PlatformMediaPlayer.kt import org.videolan.libvlc.LibVLC import org.videolan.libvlc.MediaPlayer import org.videolan.libvlc.Media actual class PlatformMediaPlayer private lateinit var libVLC: LibVLC private lateinit var mediaPlayer: MediaPlayer actual fun play() mediaPlayer

val args = arrayOf("-vvv", "--codec=avcodec") // force ffmpeg decoders libVLC = LibVLC(context, args) Look for logcat output: kmp external codec libvlcjni.so

// shared logic fun playExternalCodecFile(player: PlatformMediaPlayer) player.setDataSource("content://com.example/external_codec_sample.mkv") player.play()

actual fun setDataSource(path: String) val options = arrayOf("--codec=all", "--no-audio-time-stretch") libVLC = LibVLC(ApplicationProvider.getApplicationContext(), options) mediaPlayer = MediaPlayer(libVLC) val media = Media(libVLC, path) media.addOption(":no-audio-filter") // optional mediaPlayer.media = media