Skip to content
dueeeke edited this page Mar 19, 2019 · 9 revisions

介绍API之前先来介绍一下MediaPlayer的状态转换图,此图来自Google的开发文档

IjkPlayer虽然内部实现和MediaPlayer大相径庭,但暴露出来的API和MediaPlayer几乎是一模一样,状态转换的关系也大体相同,上图可以清晰看出各个状态的转换关系,这是理解整个播放器架构的关键所在.

IjkVideoView

Public methods

方法名 简介
public void setUrl(String url) 设置播放地址
public void setUrl(String url, Map<String, String> headers) 设置包含请求头信息的视频地址
public void setAssetFileDescriptor(AssetFileDescriptor fd) 播放assets里面的视频文件
public void setVideoController(@Nullable BaseVideoController mediaController) 设置控制器,可以为null,表示移除控制器
public void start() 开始播放的逻辑
public void pause() 暂停播放
public void resume() 从暂停播放中恢复播放
public void stopPlayback() 停止播放
public void release() 停止播放并释放播放器
public long getDuration() 获取视频总时长
public long getCurrentPosition() 获取当前播放的进度
public int getBufferedPercentage() 获取当前缓冲的进度
public void seekTo(long pos) 调整播放进度
public boolean isPlaying() 从播放器内部判断是否正在播放
public void setMute(boolean isMute) 设置是否静音
public boolean isMute() 是否处于静音状态
public int getCurrentPlayerState() 获取当前播放器的状态
public int getCurrentPlayState() 获取当前的播放状态
public long getTcpSpeed() 获取缓冲的网速
public void setSpeed(float speed) 设置播放速度
public void refresh() 刷新播放器,重新开始播放
public void skipPositionWhenPlay(int position) 一开始播放就seek到预先设置好的位置
public void setVolume(float v1, float v2) 设置音量 0.0f-1.0f 之间 v1 左声道音量 v2 右声道音量
public void setProgressManager(@Nullable ProgressManager progressManager) 设置进度管理器,用于保存播放进度
public void setLooping(boolean looping) 循环播放, 默认不循环播放
public void setAutoRotate(boolean autoRotate) 是否自动旋转, 默认不自动旋转
public void setUsingSurfaceView(boolean usingSurfaceView) 是否启用SurfaceView,默认不启用
public void setEnableAudioFocus(boolean enableAudioFocus) 是否开启AudioFocus监听, 默认开启
public void setEnableMediaCodec(boolean enableMediaCodec) 是否使用MediaCodec进行解码(硬解码),默认不开启,使用软解
public void addToVideoViewManager() 添加到VideoViewManager
public void setCustomMediaPlayer(@NonNull AbstractPlayer abstractPlayer) 自定义播放核心
public void addOnVideoViewStateChangeListener(@NonNull OnVideoViewStateChangeListener listener) 监听播放状态变化
public void removeOnVideoViewStateChangeListener(@NonNull OnVideoViewStateChangeListener listener) 移除状态监听
public void clearOnVideoViewStateChangeListeners() 移除所有状态监听
public void startFullScreen() 进入全屏
public void stopFullScreen() 退出全屏
public boolean isFullScreen() 是否处于全屏
public void retry() 重试播放,比如播放出错时
public boolean onBackPressed() 用于改变返回键的逻辑
public void setScreenScale(int screenScale) 设置视频显示比例
public void setMirrorRotation(boolean enable) 设置是否开镜像旋转
public Bitmap doScreenShot() 视频截图
public int[] getVideoSize() 获取视频宽高,其中width: mVideoSize[0], height: mVideoSize[1]
public void setRotation(float rotation) 旋转画面 rotation 需要旋转的角度

Contants

播放状态

名称 简介
STATE_ERROR 播放出错
STATE_IDLE 静止状态,此时播放器还未进行初始化
STATE_PREPARING 正在准备播放,调用了prepareAsync()或prepare()即进入此状态
STATE_PREPARED 准备完成状态,播放器此时会回调了onPrepared()方法
STATE_PLAYING 正在播放状态,调用了start()方法即进入此状态
STATE_PAUSED 暂停播放状态,调用了pause()方法即进入此状态
STATE_PLAYBACK_COMPLETED 播放完成状态,播放器此时会回调onCompletion()方法
STATE_BUFFERING 缓冲状态,seekTo方法会触发此状态,播放器此时会回调onInfo()方法
STATE_BUFFERED 缓冲结束状态,播放器此时会回调onInfo()方法
Clone this wiki locally