标签: iOS
在使用Ijkplayer的时候发现快进快退不准问题,通过阅读源码,找到Seek的函数,通过设置不同的标志位来修改Seek的类型
1. 在IJKPlayer 库文件源码中搜索 av_seek_frame 或者avformat_seek_file 这两个函数
avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,
int flags);
2. 修改其中最后一个参数flags
其中flag
对应的宏定义如下
#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward
#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes
#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes
#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame numbe
把flags
修改为AVSEEK_FLAG_ANY
即可(不过修改AVSEEK_FLAG_ANY
会引起快进快退后第一帧花屏问题,可能这也是IJKPlayer没有设置成AVSEEK_FLAG_ANY
的原因)