参考:
https://developer.android.com/reference/android/media/MediaPlayer
概述:
- 音视频的 playback。
- 创建 MediaPlayer 的线程必须和调用 SDK 接口的线程是同一个。
- 注册 callback 给 MediaPlayer SDK 的 thread 必须自带一个 running Looper,比如 main UI thread。
回调函数:
常用 :
void setOnBufferingUpdateListener (MediaPlayer.OnBufferingUpdateListener listener)
void setOnCompletionListener (MediaPlayer.OnCompletionListener listener)
void setOnErrorListener (MediaPlayer.OnErrorListener listener)
void setOnInfoListener (MediaPlayer.OnInfoListener listener)
void setOnPreparedListener (MediaPlayer.OnPreparedListener listener)
void setOnSeekCompleteListener (MediaPlayer.OnSeekCompleteListener listener)
void setOnVideoSizeChangedListener (MediaPlayer.OnVideoSizeChangedListener listener)
setOnBufferingUpdateListener:周期性(NuPlayer是1秒)上报buffering值,以percent格式
回调函数说明
如果整个流的duration是1小时,假如当前播放到半小时的位置,同时又缓存了6分钟的数据,那么这个Buffering的值是 50% + 10% = 60% ,50%是当前的播放到的pts,10%是断开网络后还能播放多久。
这个值一般用来在进度条上显示灰色缓冲进度。
setOnCompletionListener:eos时上报。
回调函数说明
setOnErrorListener :异步Error上报,同步Error通过throw exception完成。
回调函数说明
setOnInfoListener :Media信息上报或者warning上报。
回调函数说明
setOnPreparedListener :底层已经准备好 playback 时上报。
回调函数说明
setOnSeekCompleteListener :seek完成时上报。
回调函数说明
setOnVideoSizeChangedListener :何时上报?
回调函数说明
不常用:
void setOnDrmPreparedListener(MediaPlayer.OnDrmPreparedListener listener)
void setOnMediaTimeDiscontinuityListener(MediaPlayer.OnMediaTimeDiscontinuityListener listener,Handler handler)
void setOnMediaTimeDiscontinuityListener(MediaPlayer.OnMediaTimeDiscontinuityListener listener)
void setOnSubtitleDataListener(MediaPlayer.OnSubtitleDataListener listener)
void setOnSubtitleDataListener(MediaPlayer.OnSubtitleDataListener listener, Handler handler)
void setOnTimedMetaDataAvailableListener(MediaPlayer.OnTimedMetaDataAvailableListener listener)
void setOnTimedTextListener(MediaPlayer.OnTimedTextListener listener)