IOS 使用IJKPlayer时进行Options设置方法

来源:互联网 发布:sql的服务器名称 编辑:程序博客网 时间:2024/05/19 06:46

在对ijkplayer进行使用调试的时候(使用FFMoviePlayer),我发现输出栏中有:

===== options =====player-opts : start-on-prepared            = 1player-opts : overlay-format               = fcc-i420player-opts : max-fps                      = 60player-opts : framedrop                    = 0player-opts : videotoolbox-max-frame-width = 960player-opts : videotoolbox                 = 1player-opts : video-pictq-size             = 3format-opts : ijkinject-opaque             = 140449007406288format-opts : user-agent                   = ijkplayerformat-opts : auto_convert                 = 0format-opts : timeout                      = 30000000format-opts : reconnect                    = 1format-opts : safe                         = 0codec-opts  : skip_frame                   = 0codec-opts  : skip_loop_filter             = 0===================

这就是当前player的一些选项,那么我们再看看ffoptions中包含的东西:

typedef enum IJKFFOptionCategory {    kIJKFFOptionCategoryFormat = 1,    kIJKFFOptionCategoryCodec  = 2,    kIJKFFOptionCategorySws    = 3,    kIJKFFOptionCategoryPlayer = 4,} IJKFFOptionCategory;

这里的category就是对应上面的option的,
那么我们怎么改变这些参数呢,我们继续往下看FFoptions:
我们可以看到,作者提供了这样的设置接口给我们

- (void)setOptionValue:(NSString *)value                forKey:(NSString *)key            ofCategory:(IJKFFOptionCategory)category;- (void)setOptionIntValue:(int64_t)value                   forKey:(NSString *)key               ofCategory:(IJKFFOptionCategory)category;

那么根据这个我们就可以在初始化播放器时对options进行调整:
比如这样:

“`
IJKFFOptions *options = [IJKFFOptions optionsByDefault];

[options setOptionIntValue:IJK_AVDISCARD_DEFAULT forKey:@”skip_frame” ofCategory:kIJKFFOptionCategoryCodec];

[options setOptionIntValue:IJK_AVDISCARD_DEFAULT forKey:@”skip_loop_filter” ofCategory:kIJKFFOptionCategoryCodec];

[options setOptionIntValue:1 forKey:@”videotoolbox” ofCategory:kIJKFFOptionCategoryPlayer];

[options setOptionIntValue:60 forKey:@”max-fps” ofCategory:kIJKFFOptionCategoryPlayer];

_player = [[IJKFFMoviePlayerController alloc] initWithContentURL:self.url withOptions:options];
“`
这里要注意几个地方
Options初始化不能少[IJKFFOptions optionsByDefault],然后可能由于一些误解可能会使用错函数:setvalue forkey,然后忽略了category,导致设置不成功。

至于ffmpeg内部的options呢就只能自己去configure里面设置了

1 0