一、IJKPlayer 不像系统播放器会给你旋转视频角度,因此你须要经过onInfo
的what == IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED
去获取角度,本身旋转画面;或者开启硬解硬解码,不过硬解码容易形成黑屏无声,诸位慎重啊O__O "…。javascript
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-handle-resolution-change", 1);复制代码
二、 IJKPlayer 出现黑色有声音没图像,看看你的视频编码是否是H264,pixel format是否存在,音频编码是否是AAC?默认IJKPlayer是不支持3pg(支持它干啥(・-・*)?),不支持mepg4(好比这个库RecordVideoDemo ),不支持AMR。因此若是你真的想要支持,那么参考这个#1961,打开mpeg4支持,从新编ffmpeg,而后经过硬解码播放mpeg4;或者经过系统的录制VideoRecord;或者选另外的JAVACV录制封装FFmpegRecorder。java
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec_mpeg4", 1);复制代码
三、 快进和慢放接口,只支持API23以上,23如下的支持,是须要本身配置ffmpeg支持avfilter
,不过可能会出现声音颤抖等问题,官方说不稳定,参考#1690。git
Tryavfilter but the audio sounds shaking = =
For avfilter, only support software decoder.复制代码
四、暂停的时候,退到后台再回到前台,画面黑了?这时候我的处理方式是,能够在暂停的时候,经过TextureView.getBitmap(point.x, point.y);
获取到暂停的画面,用ImageView显示它,在onSurfaceTextureUpdated
的时候隐藏ImageView,来实现画面的衔接。github
五、一些视频返回码ide
int MEDIA_INFO_VIDEO_RENDERING_START = 3;//视频准备渲染
int MEDIA_INFO_BUFFERING_START = 701;//开始缓冲
int MEDIA_INFO_BUFFERING_END = 702;//缓冲结束
int MEDIA_INFO_VIDEO_ROTATION_CHANGED = 10001;//视频选择信息
int MEDIA_ERROR_SERVER_DIED = 100;//视频中断,通常是视频源异常或者不支持的视频类型。
int MEDIA_ERROR_IJK_PLAYER = -10000,//通常是视频源有问题或者数据格式不支持,好比音频不是AAC之类的
int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200;//数据错误没有有效的回收复制代码
六、某些视频在SeekTo的时候,会跳回到拖动前的位置,这是由于视频的关键帧的问题,通俗一点就是FFMPEG不兼容,视频压缩过于厉害,seek只支持关键帧,出现这个状况就是原始的视频文件中i 帧比较少,播放器会在拖动的位置找最近的关键帧,目前么,IJKPlayer无解。编码
七、下载速度能够经过IjkMediaPlayer的getTcpSpeed
获取。spa
八、高分辨率开启硬解码,不支持的话会自动切换到软解,就算开启mediacodec,若是设备不支持,显示的解码器也是avcodec软解。code
九、ijkMediaPlayer.setOption可配置的对应头文件参考:ff_ffplay_options。orm
十、缓冲进度条不到100,官方表示我就不保证都100,因此通常我都是:cdn
//95这个数值可能不许确,有些时候可能还须要低一些
if (secProgress > 95) secProgress = 100;复制代码
十一、上面一、二、6的问题,在IJK封装的EXOPlayer和MediaPlayer都不会有问题,兼容上确实强过IJKPlayer,可是它们在细节上,却没有IJK处理的好,如EXOPlayer:退到后再回到前台、切换渲染控件的黑屏一段时间问题,除了用seekto以外目前没发现其余办法,这样的体验让我最后仍是选择IJKPlayer。
总的来讲,兼容上仍是谷歌的强,可是细节上仍是IJKPlayer处理的好,一个是播放器兼容视频,一个是视频兼容播放器,看我的喜爱吧︿( ̄︶ ̄)︿!