
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简单使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)