文档首页 > > 播放器SDK> iOS播放器> 接口参考

接口参考

分享
更新时间:2020/06/15 GMT+08:00

IJKMediaPlayback类

表1 接口说明

接口名

描述

IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification

播放状态的改变代替MPMoviePlayerContentPreloadDidFinishNotification。

IJKMPMoviePlayerScalingModeDidChangeNotification

缩放比例的改变。

IJKMPMoviePlayerPlaybackDidFinishNotification IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey

NSNumber (IJKMPMovieFinishReason)当电影播放结束或用户退出播放时调用。

IJKMPMoviePlayerPlaybackStateDidChangeNotification

用户改变播放状态改变时调用。

IJKMPMoviePlayerLoadStateDidChangeNotification

当网络加载状态发生变化时。

IJKMPMoviePlayerIsAirPlayVideoActiveDidChangeNotification

当视频通过AirPlay开始播放视频或结束时调用Movie Property Notifications属性相关的同时声明。

IJKMPMovieNaturalSizeAvailableNotification

在执行prepareToPlay时开始异步确定影片属性,当相关属性变为有效可用时调用该通知。

IJKMPMoviePlayerVideoDecoderOpenNotification

编译器打开通知。

IJKMPMoviePlayerFirstVideoFrameRenderedNotification

视频第一帧时通知。

IJKMPMoviePlayerFirstAudioFrameRenderedNotification

音频第一段时通知。

表2 IJKMediaPlayback方法说明

方法

描述

- (void)prepareToPlay

准备播放。

- (void)play

播放。

- (void)pause

暂停。

- (void)stop

停止播放。

- (BOOL)isPlaying

获取播放状态,是否正在播放。

- (void)setPauseInBackground:(BOOL)pause

后台暂停。

- (void)shutdown

这句要写在viewDidDisappear中,否则可能会造成vc不会被释放。

- (UIImage *)thumbnailImageAtCurrentTime

获取当前时间的封面帧图片。

表3 IJKMediaPlayback属性说明

属性

描述

@property (nonatomic, readonly) UIView *view

用于显示视频播放的view,调用次view

@property (nonatomic) NSTimeInterval currentPlaybackTime

当前播放的时间点

@property(nonatomic, readonly) NSTimeInterval duration

总时长

@property(nonatomic, readonly) NSTimeInterval playableDuration

可播放时长

@property(nonatomic, readonly) NSInteger bufferingProgress

缓冲进度

@property(nonatomic, readonly) BOOL isPreparedToPlay

准备播放

@property(nonatomic, readonly) IJKMPMoviePlaybackState playbackState

播放终止状态枚举

@property(nonatomic, readonly) IJKMPMovieLoadState loadState

加载状态枚举

@property(nonatomic, readonly) int64_t numberOfBytesTransferred

传输字节数

@property(nonatomic, readonly) CGSize naturalSize

视频原始显示View size

@property(nonatomic) IJKMPMovieScalingMode scalingMode

视频尺寸模式

@property(nonatomic) BOOL shouldAutoplay

需要自动播放

@property (nonatomic) BOOL allowsMediaAirPlay

支持AirPlay媒体

@property (nonatomic) BOOL isDanmakuMediaAirPlay

支持弹幕AirPlay媒体

@property (nonatomic, readonly) BOOL airPlayMediaActive

AirPlay是否活跃

@property (nonatomic) float playbackRate

返回音频/视频的当前播放速度

表4 IJKMediaUrlOpenDelegate方法说明

方法

描述

- (id)initWithUrl:(NSString *)url

初始化URL。

event:(IJKMediaEvent)event

设置URL打开协议,具体设置请参考表11

segmentIndex:(int)segmentIndex

设置分片个数。

retryCounter:(int)retryCounter

设置重试次数。

表5 IJKMediaUrlOpenDelegate属性说明

属性

描述

@property(nonatomic, readonly) int IJKMediaEvent event

URL协议event。

@property(nonatomic, readonly) int segmentIndex

分片次数。

@property(nonatomic, readonly) int retryCounter

重试次数。

@property(nonatomic, retain) NSString *url

播放URL。

@property(nonatomic) int error

错误提示,发生错误该属性为负。

@property(nonatomic, getter=isHandled) BOOL handled

如果URL发生改变,该数值变为Yes。

@property(nonatomic, getter=isUrlChanged) BOOL urlChanged

通过改变URL,设置为YES。

表6 IJKMPMovieLoadState类

枚举成员

描述

IJKMPMovieLoadStateUnknown

0,未知状态。

IJKMPMovieLoadStatePlayable

1 << 0,视频未完成全部缓存,但已缓存的数据可以进行播放。

IJKMPMovieLoadStatePlaythroughOK

1 << 1,完成缓存,如果设置了自动播放(shouldAutoPlay为Yes),完成缓存后会自动播放。

IJKMPMovieLoadStateStalled

1 << 2,数据缓存已经停止,播放将暂停。

表7 IJKMPMoviePlaybackState类

枚举成员

描述

IJKMPMoviePlaybackStateStopped

播放停止。

IJKMPMoviePlaybackStatePlaying

开始播放。

IJKMPMoviePlaybackStatePaused

暂停播放。

IJKMPMoviePlaybackStateInterrupted

播放间断。

IJKMPMoviePlaybackStateSeekingForward

播放快进。

IJKMPMoviePlaybackStateSeekingBackward

播放后退。

表8 IJKMPMovieScalingMode类

枚举成员

描述

IJKMPMovieScalingModeNone

无缩放比例。

IJKMPMovieScalingModeAspectFit

尺寸比例不变填满屏幕为止。

IJKMPMovieScalingModeAspectFill

尺寸比例不变填满屏幕,可能造成内容缺少。

IJKMPMovieScalingModeFill

尺寸比例变形也会填满屏幕。

表9 IJKMPMovieFinishReason类

枚举成员

描述

IJKMPMovieFinishReasonPlaybackEnded

完成原因:播放结束。

IJKMPMovieFinishReasonPlaybackError

完成原因:播放出现错误。

IJKMPMovieFinishReasonUserExited

完成原因:出现用户人为退出。

表10 IJKMPMovieTimeOption类

枚举成员

描述

IJKMPMovieTimeOptionNearestKeyFrame

获取缩略图的时间点数组。

IJKMPMovieTimeOptionExact

准确时间。

表11 IJKMediaEvent类

分类

枚举成员

描述

Notify Events

IJKMediaEvent_WillHttpOpen

1,HTTP通道打开事件attr:url。

IJKMediaEvent_DidHttpOpen

2,TCP通道打开事件attr:url、error、http_code。

IJKMediaEvent_WillHttpSeek

3,HTTP通道的seek事件attr:url、offset。

IJKMediaEvent_DidHttpSeek

4,HTTP通道的seek事件attr:url、offset、error、http_code。

Control Message

IJKMediaCtrl_WillTcpOpen

0x20001,TCP控制通道打开IJKMediaUrlOpenData:no args。

IJKMediaCtrl_DidTcpOpen

0x20002,TCP控制通道seek

IJKMediaUrlOpenData:error、family、ip、port、fd。

IJKMediaCtrl_WillHttpOpen

0x20003,HTTP控制通道打开IJKMediaUrlOpenData:url、segmentIndex、retryCounter。

IJKMediaCtrl_WillLiveOpen

0x20005,Live控制通道打开IJKMediaUrlOpenData:url、retryCounter。

IJKMediaCtrl_WillConcatSegmentOpen

0x20007,ConcatSegment控制通道打开IJKMediaUrlOpenData:url、segmentIndex、retryCounter。

IJKMediaModule类

表12 属性说明

属性

描述

@property(atomic, getter=isAppIdleTimerDisabled)BOOL appIdleTimerDisabled

APP运行时是否锁屏,若您不需要在运行程序时锁屏,则设置为YES。

@property(atomic, getter=isMediaModuleIdleTimerDisabled) BOOL mediaModuleIdleTimerDisabled

处于非播放状态是否锁屏,若您不需要在非播放状态时锁屏,则设置为YES。

IJKFFOptions类

表13 IJKAVDiscard类

枚举内容

描述

IJK_AVDISCARD_NONE

-16,不丢帧。

IJK_AVDISCARD_DEFAULT

0,如果包大小为0,则抛弃无效的包。

IJK_AVDISCARD_NONREF

8,抛弃非参考帧(I帧)。

IJK_AVDISCARD_BIDIR

16,抛弃B帧。

IJK_AVDISCARD_NONKEY

32,抛弃除关键帧以外的帧,比如B,P帧。

IJK_AVDISCARD_ALL

48,抛弃所有的帧

表14 方法和属性

分类

参数

描述

示例

kIJKFFOptionCategoryPlayer

r

帧速率(fps)。

可以根据实际需求进行修改,但为保证音画同步建议帧速率设定为15或者29.97。

[options setPlayerOptionIntValue:29.97 forKey:@"r"];

kIJKFFOptionCategoryPlayer

framedrop

跳帧开关。

取值范围:[-1,120]

  • 0:表示关闭,默认值。
  • 其它值:表示丢帧程度

建议设置为5。

[options setPlayerOptionIntValue:0 forKey:@"framedrop"];

kIJKFFOptionCategoryPlayer

vol

设置音量的大小。

256为标准音量,若需要设置成两倍音量时则输入512,依此类推。

[options setPlayerOptionIntValue:512 forKey:@"vol"];

kIJKFFOptionCategoryPlayer

max-fps

最大fps。

[options setPlayerOptionIntValue:30 forKey:@"max-fps"];

kIJKFFOptionCategoryPlayer

packet-buffering

关闭播放器缓冲。

若频繁卡顿,则保留缓冲区。不设置则默认为1。

[options setPlayerOptionIntValue:0 forKey:@"packet-buffering"];

kIJKFFOptionCategoryPlayer

videotoolbox

开启硬编码。

默认为0:软解。

[options setPlayerOptionIntValue:1 forKey:@"videotoolbox"];

kIJKFFOptionCategoryPlayer

an

静音设置。

[option setPlayerOptionValue:@"1" forKey:@"an"];

kIJKFFOptionCategoryPlayer

vn

是否有视频

[option setPlayerOptionValue:@"1" forKey:@"vn"];

kIJKFFOptionCategoryPlayer

nodisp

是否禁止图像显示(只输出音频)。

[options setPlayerOptionIntValue:1 forKey:@"nodisp"];

kIJKFFOptionCategoryPlayer

videotoolbox-max-frame-width

指定最大宽度。

[options setPlayerOptionIntValue:960 forKey:@"videotoolbox-max-frame-width"];

kIJKFFOptionCategoryPlayer

max_cached_duration

设置缓存大小。

可根据实际需求进行修改。

[options setPlayerOptionIntValue:3000 forKey:@"max_cached_duration"];

[options setPlayerOptionIntValue:0 forKey:@"max_cached_duration"];

kIJKFFOptionCategoryPlayer

infbuf

设置是否无限读。

[options setPlayerOptionIntValue:1 forKey:@"infbuf"];

[options setPlayerOptionIntValue:0 forKey:@"infbuf"];

kIJKFFOptionCategoryPlayer

packet-buffering

是否关闭播放器缓冲。

[options setPlayerOptionIntValue:0 forKey:@"packet-buffering"]; [options setPlayerOptionIntValue:1 forKey:@"packet-buffering"];

kIJKFFOptionCategoryPlayer

start-on-prepared

开始准备。

[options setPlayerOptionIntValue:0 forKey:@"start-on-prepared"];

kIJKFFOptionCategoryPlayer

overlay-format

fourcc叠加格式。

[options setPlayerOptionIntValue:@"fcc-_es2" forKey:@"overlay-format"];

kIJKFFOptionCategoryPlayer

video-pictq-size

最大图片队列帧数。

[options setPlayerOptionIntValue:3 forKey:@"video-pictq-size"];

kIJKFFOptionCategoryPlayer

min-frames

最小帧停止预读。

[options setPlayerOptionIntValue:25 forKey:@"min-frames"];

kIJKFFOptionCategoryCodec

skip_loop_filter

开启环路滤波,具体参数设置请参考表13

  • 0较48清晰,但解码开销大。
  • 48清晰度低,解码开销小。

[options setCodecOptionIntValue:IJK_AVzDISCARD_DEFAULT forKey:@"skip_loop_filter"];

kIJKFFOptionCategoryCodec

skip_frame

累积延迟。

  • RTMP到达CDN时存在4.0到5.0秒的延迟,可以通过设置对应参数进行优化。
  • ffplay默认的帧率控制没有追帧策略,若网络发生抖动,延时会累加。

优化策略:调整帧率控制部分,保障流畅度和实时性。

[options setCodecOptionIntValue:IJK_AVDISCARD_DEFAULT forKey:@"skip_frame"];

kIJKFFOptionCategoryFormat

rtsp_transport

如果使用RTSP协议,可以优先选用tcp(默认udp)。

[options setFormatOptionValue:@"tcp" forKey:@"rtsp_transport"];

kIJKFFOptionCategoryFormat

probesize

播放前的探测Size,默认是1M,若设置为小于1M会更快播出画面。

[options setFormatOptionIntValue:1024 * 16 forKey:@"probesize"];

kIJKFFOptionCategoryFormat

analyzeduration

播放前的探测时间。

[options setFormatOptionIntValue:50000 forKey:@"analyzeduration"];

kIJKFFOptionCategoryFormat

auto_convert

自动转屏开关。

[options setFormatOptionIntValue:0 forKey:@"auto_convert"];

kIJKFFOptionCategoryFormat

reconnect

重连次数。

[options setFormatOptionIntValue:1 forKey:@"reconnect"];

kIJKFFOptionCategoryFormat

timeout

超时时间,“timeout”参数只对“http”设置有效。若使用“RTMP”设置“timeout”,ijkplayer内部会忽略“timeout”参数。

[options setFormatOptionIntValue:30 * 1000 * 1000 forKey:@"timeout"];

showHudView

显示加载指示器视图。

options.showHudView = NO;

IJKFFMoviePlayerController类

表15 LogLevel日志等级枚举说明

枚举内容

描述

k_IJK_LOG_UNKNOWN

0,未知

k_IJK_LOG_DEFAULT

1,默认

k_IJK_LOG_VERBOSE

2,详细

k_IJK_LOG_DEBUG

3,调试

k_IJK_LOG_INFO

4,详情信息

k_IJK_LOG_WARN

5,警告

k_IJK_LOG_ERROR

6,错误

k_IJK_LOG_FATAL

7,致命

k_IJK_LOG_SILENT

8,静默、无日志

表16 方法说明

方法

描述

- (id)initWithContentURL:(NSURL *)aUrl

withOptions:(IJKFFOptions *)options

获取视频路径,创建播放器。

//本地视频路径
NSString* localFilePath=[[NSBundle mainBundle]pathForResource:@"测试视频" ofType:@"mp4"];
NSURL *localVideoUrl = [NSURL fileURLWithPath:localFilePath]; //网络视频路径
NSString *webVideoPath = @"https://651.cdn-vod.huaweicloud.com/asset/58ae22459ce00e735807bf5621cfc170/play_video/db50c8f66bd83bc4c7cd573eb8cabfbc_H.264_1920X1080_HEAACV1_3000.mp4";
NSURL *webVideoUrl = [NSURL URLWithString:webVideoPath];
_viewController = [[IJKFFMoviePlayerController alloc]initWithContentURL:webVideoUrl];

- (id)initWithContentURLString:(NSString *)aUrlString

withOptions:(IJKFFOptions *)options

获取视频路径。

- (void)prepareToPlay

播放准备。

- (void)play

播放。

- (void)pause

暂停。

- (void)stop

停止播放。

- (BOOL)isPlaying

是否正在播放中。

- (void)setPauseInBackground:(BOOL)pause

后台暂停。

- (BOOL)isVideoToolboxOpen

视频工具栏是否开启。

+ (void)setLogReport:(BOOL)preferLogReport

日志报告输出。

+ (void)setLogLevel:(IJKLogLevel)logLevel

日志报告等级。

+ (BOOL)checkIfFFmpegVersionMatch:(BOOL)showAlert

检查版本是否匹配。

+ (BOOL)checkIfPlayerVersionMatch:(BOOL)showAlert

检查版本是否匹配。

表17 属性说明

属性

描述

@property(nonatomic, readonly) CGFloat fpsInMeta

fps率。

@property(nonatomic, readonly) CGFloat fpsAtOutput

fps输出值。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问