在 ijkplayer 播放器内核中,有很多的选项可以设置,选项设置会影响到放器的具体行为。 进行选项设置时,要切实理解选项产生的影响,不要盲目胡乱设置。
在开发 fijkplayer 的过程中,我也对 ijkplayer 增加了一些额外的选项。 这节内容主要是对这些额外选项设置的说明。附加对部分 ijkplayer 内核中原有的选项进行说明。
选项分类
播放器内核中的选项有 5 中分类,分类作为 setOption 的 category,或者直接使用 FijkOption 中的方法,分类体现在方法名中。
具体的分类有:
-
int formatCategory = 1;
此分类用来设置 ffmpeg AVFormatContext 中的一下设置,option 会直接传递给 ffmpeg AVFormatContext -
int codecCategory = 2;
此分类用来设置 ffmpeg 解码器,在 openCodec 的时候会把 option 传递给 AVCodecContext -
int swsCategory = 3; 此分类用在目前编译的 ijkplayer 中没有用到
-
int playerCategory = 4;
这个分类是最常用的。用于设置播放器中的行为 -
int swrCategory = 5;
此分类用于设置音频重采样时的一些属性,option 会被传递到 SwrContext
fijkplayer 中修改新增 ijkplayer 的属性
cover-after-prepared
playerCategory,取值 0,1
在播放器 prepared 之后对视频进行解码,并把视频第一针画面渲染出来。在一些情况下可以作为封面,但不建议使用。 建议在服务端生成封面,然后在 flutter 中显示图片。
enable-position-notify
playerCategory,取值 0,1
播放器播放过程中,主动将播放进度作为消息进行广播通知。用户订阅进度更新广播,就能一直收到更新提醒
pos-update-interval
playerCategory,取值 [10, 1000] ,取值单位是毫秒
设置上面 enable-position-notify 进行进度更新的时间间隔。设置后关于进度更新的消息会参考此时间间隔进行发送,但不保证完全对齐此间隔。 进度更新消息的间隔还受到视频帧率,以及音频播放回调间隔的影响。
常用 ijkplayer 原有属性解释
seek-at-start
playerCategory,取值 [0,INT_MAX]
seek-at-start 用来设置播放器的起播位置。比如电视剧集跳过片头、或者从用户上次离开位置继续播放。 属性设置取值单位是毫秒。