android ijkplayer简单使用

android ijkplayer简单使用,第1张

概述  classVideoPlayer:FrameLayout,TextureView.SurfaceTextureListener{privatevarurl:String?=nullprivatevarheaders:Map<String,String>?=nullprivatevarmediaPlayer:IMediaPlayer?=null//播放器privatevarcontainer:FrameLay

 

 

class VIDeoPlayer : FrameLayout, TextureVIEw.SurfaceTextureListener{    private var url:String? = null    private var headers:Map<String,String>? = null    private var mediaPlayer: IMediaPlayer? = null   //播放器    private var container: FrameLayout? = null      //播放器根目录    private var textureVIEw: TextureVIEw? = null   //视频显示视图    private var surfaceTexture: SurfaceTexture? = null    private var playerType:Int = PlayerTypes.TYPE_IJK    private var surface: Surface? = null    constructor(context: Context, attributeSet: AttributeSet):super(context,attributeSet){        init()    }    /**     * 设置播放器类型     *     * @param playerType IjkPlayer or MediaPlayer.     */    fun setPlayerType(playerType: Int) {        this.playerType = playerType    }    fun setUp(url:String,headers:Map<String,String>?){        this.url = url        this.headers = headers    }    fun start(){        mediaPlayer?.start()    }    private fun init(){        container = FrameLayout(context)        this.removeVIEw(container)        val params = LayoutParams(            LayoutParams.MATCH_PARENT,            LayoutParams.MATCH_PARENT        )        this.addVIEw(container,params)        initTextureVIEw()        initMediaPlayer()    }    private fun initTextureVIEw(){        if(textureVIEw == null){            textureVIEw = TextureVIEw(context)            textureVIEw?.surfaceTextureListener = this        }        container?.removeVIEw(textureVIEw)        val params = LayoutParams(            LayoutParams.MATCH_PARENT,            LayoutParams.MATCH_PARENT,            Gravity.CENTER        )        container?.addVIEw(textureVIEw,0,params)    }    private fun initMediaPlayer(){        if(mediaPlayer == null){            when(playerType){                PlayerTypes.TYPE_IJK -> mediaPlayer = IjkMediaPlayer()                PlayerTypes.TYPE_NATIVE -> mediaPlayer = AndroIDMediaPlayer()                else -> mediaPlayer = IjkMediaPlayer()            }        }        mediaPlayer?.setonVIDeoSizeChangedListener { player, w, h, sar_num, sar_den ->            Log.d("======","setonVIDeoSizeChangedListener")        }        mediaPlayer?.setonErrorListener { player, what, extra ->            Log.d("======","setonErrorListener")            true        }        mediaPlayer?.setonCompletionListener {            Log.d("======","setonCompletionListener")        }        mediaPlayer?.setonPreparedListener {            Log.d("======","setonPreparedListener")        }        mediaPlayer?.setonInfoListener { player, what, extra ->            Log.d("======","setonInfoListener")            true        }        mediaPlayer?.setonBufferingUpdateListener { player, percent ->            Log.d("======","setonBufferingUpdateListener")        }                openMediaPlayer()    }    private fun openMediaPlayer(){        mediaPlayer?.setDataSource(context, Uri.parse(url),headers)        mediaPlayer?.prepareAsync()    }    overrIDe fun onSurfaceTextureSizeChanged(p0: SurfaceTexture?, p1: Int, p2: Int) {    }    overrIDe fun onSurfaceTextureUpdated(p0: SurfaceTexture?) {    }    overrIDe fun onSurfaceTextureDestroyed(p0: SurfaceTexture?): Boolean {        return p0 == null    }    overrIDe fun onSurfaceTextureAvailable(p0: SurfaceTexture?, p1: Int, p2: Int) {        if(surfaceTexture == null){            surfaceTexture = p0            if(surface == null){                surface = Surface(surfaceTexture)            }            mediaPlayer?.setSurface(surface)        }else{            textureVIEw?.surfaceTexture = surfaceTexture        }    }}

 

 

就是简单实现播放功能,其他的以后在添加

vIDeo_vIEw.setPlayerType(PlayerTypes.TYPE_IJK)
vIDeo_vIEw.setUp(VIDeoDatas.vIDeoUrls[2],null)
vIDeo_vIEw.start()
总结

以上是内存溢出为你收集整理的android ijkplayer简单使用全部内容,希望文章能够帮你解决android ijkplayer简单使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1113580.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存