標(biāo)簽: iOS
在使用Ijkplayer的時候發(fā)現(xiàn)快進快退不準(zhǔn)問題,通過閱讀源碼,找到Seek的函數(shù),通過設(shè)置不同的標(biāo)志位來修改Seek的類型
1. 在IJKPlayer 庫文件源碼中搜索 av_seek_frame 或者avformat_seek_file 這兩個函數(shù)
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. 修改其中最后一個參數(shù)flags
其中flag
對應(yīng)的宏定義如下
#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沒有設(shè)置成AVSEEK_FLAG_ANY
的原因)