IJKPlayer问题集锦之不定时更新

 你们吼,不知名程序猿小郭同窗又冒泡啦,今天是主角是:业界知名,天朝最大异(tong)性交友平台,BILIBILI开源的视频播放器项目,基于FFMPEG的IJKPlayer<( ̄ˇ ̄)/···的问题集锦!好吧,相信刚刚脱离周末,工做两天进入状态的你们,没有什么心情扯蛋,由于···扯多了真的好痛Σ( ° °|||)︴,咱们仍是开始吧。

 
一、IJKPlayer 不像系统播放器会给你旋转视频角度,因此你须要经过onInfowhat == 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录制封装FFmpegRecorderjava

ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec_mpeg4", 1);复制代码

 
三、 快进和慢放接口,只支持API23以上,23如下的支持,是须要本身配置ffmpeg支持avfilter,不过可能会出现声音颤抖等问题,官方说不稳定,参考#1690git

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_optionsorm

十、缓冲进度条不到100,官方表示我就不保证都100,因此通常我都是:cdn

//95这个数值可能不许确,有些时候可能还须要低一些
if (secProgress > 95) secProgress = 100;复制代码

十一、上面一、二、6的问题,在IJK封装的EXOPlayer和MediaPlayer都不会有问题,兼容上确实强过IJKPlayer,可是它们在细节上,却没有IJK处理的好,如EXOPlayer:退到后再回到前台、切换渲染控件的黑屏一段时间问题,除了用seekto以外目前没发现其余办法,这样的体验让我最后仍是选择IJKPlayer。

总的来讲,兼容上仍是谷歌的强,可是细节上仍是IJKPlayer处理的好,一个是播放器兼容视频,一个是视频兼容播放器,看我的喜爱吧︿( ̄︶ ̄)︿!

相关文章
相关标签/搜索