| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package com.example.ijkplayer
- /// create 2019/3/7 by cai
- import android.net.Uri
- import io.flutter.plugin.common.PluginRegistry
- import tv.danmaku.ijk.media.player.IjkMediaPlayer
- import tv.danmaku.ijk.media.player.TextureMediaPlayer
- class IJK(private val registry: PluginRegistry.Registrar) {
- private val textureEntry = registry.textures().createSurfaceTexture()
- val id: Long
- get() = textureEntry.id()
- private val ijkPlayer: IjkMediaPlayer = IjkMediaPlayer()
- private val mediaPlayer: TextureMediaPlayer
- init {
- mediaPlayer = TextureMediaPlayer(ijkPlayer)
- mediaPlayer.surfaceTexture = textureEntry.surfaceTexture()
- }
- fun setUri(uri: String, callback: () -> Unit) {
- mediaPlayer.setDataSource(registry.activeContext(), Uri.parse(uri))
- mediaPlayer.setOnPreparedListener {
- callback()
- }
- }
- fun setNetUri(uri: String, callback: () -> Unit) {
- try {
- ijkPlayer.setOnPreparedListener {
- callback()
- }
- ijkPlayer.dataSource = uri
- ijkPlayer.prepareAsync()
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- fun dispose() {
- mediaPlayer.releaseSurfaceTexture()
- mediaPlayer.release()
- ijkPlayer.release()
- textureEntry.release()
- }
- fun play() {
- try {
- mediaPlayer.start()
- // ijkPlayer.start()
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- fun pause() {
- mediaPlayer.pause()
- }
- fun stop() {
- mediaPlayer.stop()
- }
- fun seekTo(msec: Long) {
- mediaPlayer.seekTo(msec)
- }
- fun getDuration(): Long {
- return mediaPlayer.duration
- }
- }
|