简介
Android中的媒体播放器有很多,其中主要使用的有三种,他们各自有自己的使用场景:
- MediaPlayer:是Android内置的媒体播放器,使用也是最简单的,不需要任何额外库导入,但是使用场景有限,一般不用于视频播放,多用于音频播放。
- IjkPlayer:是目前开源的最强大的播放器,基于FFmpeg,支持软硬编解码,如果是定制化需求的话需要自行编译出播放库。IjkPlayer多用于国内局点媒体类应用的开发。
- ExoPlayer:是google官方提供的一个Android应用级媒体播放器,他不仅仅支持Android原生的MediaPlayer所播放的媒体类型,还包括DASH、SmoothStreaming。与MediaPlayer不同的是,ExoPlayer可以很方便的扩展和自定义。由于Exoplayer依赖于Android中的MediaCodec API(Android 4.1 API 16),所以最低支持的版本是API不能小于16,Widewine公共秘钥是Android 4.4以上才能支持。ExoPlayer多用于国外局点媒体类应用的开发。
MediaPlayer的简单使用
MediaPlayer的使用最简单,不需要导入任何库,直接使用即可:
class SmartMediaPlayer(val surfaceHolder: SurfaceHolder): MediaPlayer.OnPreparedListener, SurfaceHolder.Callback {
val mPlayer = MediaPlayer().apply {
setOnPreparedListener(this@SmartMediaPlayer)
surfaceHolder.addCallback(this@SmartMediaPlayer)
}
fun start(url: String){
if (mPlayer.isPlaying){
mPlayer.stop()
}
mPlayer.reset()
mPlayer.setDataSource(url)
mPlayer.prepareAsync()
}
fun resume(){
mPlayer.start()
}
fun pause(){
mPlayer.pause()
}