Skip to content
dueeeke edited this page Dec 24, 2019 · 9 revisions

很久没更新了,建议直接看我源码中的注释

VideoView

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 replay(boolean resetPosition) 重新播放,resetPosition 是否从头开始播放
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 addOnVideoViewStateChangeListener(@NonNull OnVideoViewStateChangeListener listener) 监听播放状态变化
public void removeOnVideoViewStateChangeListener(@NonNull OnVideoViewStateChangeListener listener) 移除状态监听
public void clearOnVideoViewStateChangeListeners() 移除所有状态监听
public void startFullScreen() 进入全屏
public void stopFullScreen() 退出全屏
public boolean isFullScreen() 是否处于全屏
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 需要旋转的角度
public void startTinyScreen() 开启小屏播放
public void stopTinyScreen() 退出小屏播放
public boolean isTinyScreen() 是否处于小屏播放状态
public void setTinyScreenSize(int[] tinyScreenSize) 设置小屏的宽高

Contants

播放状态
名称 简介
STATE_ERROR 播放出错
STATE_IDLE 静止状态,此时播放器还未进行初始化
STATE_PREPARING 正在准备播放,调用了prepareAsync()即进入此状态
STATE_PREPARED 准备完成状态,播放器此时会回调了onPrepared()方法
STATE_PLAYING 正在播放状态,调用了start()方法即进入此状态
STATE_PAUSED 暂停播放状态,调用了pause()方法即进入此状态
STATE_PLAYBACK_COMPLETED 播放完成状态,播放器此时会回调onCompletion()方法
STATE_BUFFERING 缓冲状态,seekTo方法会触发此状态,播放器此时会回调onInfo()方法
STATE_BUFFERED 缓冲结束状态,播放器此时会回调onInfo()方法
播放器状态
名称 简介
PLAYER_NORMAL 小屏状态
PLAYER_FULL_SCREEN 全屏状态
视频画面比例
名称 简介
SCREEN_SCALE_DEFAULT 默认的比例,按照视频宽高等比缩放并填充视频框,视频比例和视频框比例不同时有黑边
SCREEN_SCALE_16_9 16:9,画面可能变形
SCREEN_SCALE_4_3 4:3,画面可能变形
SCREEN_SCALE_MATCH_PARENT 填充视频框,画面可能变形
SCREEN_SCALE_ORIGINAL 以视频原始宽高显示,可能出现裁切画面,显示不全
SCREEN_SCALE_CENTER_CROP 和ImageView的CenterCrop类似,可能出现裁切画面,显示不全

BaseVideoController

方法名 简介
protected abstract int getLayoutId() 抽象方法,设置控制器布局文件,子类必须实现
public void show() 控制器显示
public void hide() 控制器隐藏
public void setPlayerState(int playerState) 用于在IjkVideoView中向控制器传递播放器状态
public void setPlayState(int playState) 用于在IjkVideoView中向控制器传递播放状态
public void showStatusView() 显示错误界面和网络提示界面
public void hideStatusView() 隐藏错误界面和网络提示界面
protected void doPauseResume() 播放和暂停的逻辑
protected void doStartStopFullScreen() 横竖屏切换的逻辑
protected int setProgress() 实现刷新进度条的逻辑
Clone this wiki locally