IOS播放器SDK
概述
IJKFFMoviePlayerController 是一款基于 iOS 平台的多媒体视频播放 SDK。它为 iOS 的开发者提供了简单易用的接口,帮助 开发者方便快捷、低门槛的实现多媒体播放功能的开发。它支持 HLS、RTMP、FLV等多种流媒体播 放格式,视频支持 h264 格式、音频支持 AAC 格式。另外,针对直播用户的需求,还增加了首帧秒开的功能;同时为了减少直播的延迟,增加了弱网条件下播放的跳帧功能。
功能
支持HLS、RTMP、FLV等流格式, 支持h264+aac 支持arm64,x86_64架构 支持直播首帧秒开 支持弱网条件下的丢帧策略 支持多实例,支持https 支持带切边的视频渲染模式
阅读对象
本文档面向所有使用该SDK的开发人员、测试人员以及对此感兴趣的用户,要求开发者对播放器的基本功能有一定的了解。
开发准备
设备和系统版本
ios8.0 及以上 iphone5 及以上
安装包说明
将demo项目中的两个framework,包含播放器和评论sdk文件,需要在您的工程中进行引用。 两个库包含arm64 和 x86_64架构,可以在真机和模拟器调试。
快速开发
开发环境配置
- 需要准备 iOS 的运行环境(XCode9.0 以上版本,iOS SDK9.0 以上版本),以及硬件 CPU 支持 ARMv7、ARMv7s 或 ARM64 的 iOS 设备。
sdk 包添加
使用 Xcode 创建工程的方法如下:
- Xcode 创建一个 iOS 应用工程。
将 SDK 中的 framework 添加到工程中 点击“Add Other...”,选中 framework. 点击“Open”. 点击“Finish” 完成 framework 的添加
将 SDK 中的头文件 IJKFFMoviePlayerController.h 包含到工程中。
demo 示例
在 SDK 中提供了 Demo,此 Demo 是用播放器 SDK 开发了一个完整的视频播放器,用户可以参考 Demo 进行播 放器的开发。
使用 SDK 开发播放器时,基本的开发步骤为:
- alloc 播放器后,调用 create 创建播放器,并传入 view 显示窗口
- 注册通知响应函数。
- 传入要播放的视频地址,调用 prepareToPlay 准备开始播放,。
下面以 demo 为例来详细说明上面的这些步骤。
//订阅监听
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(PlayBackDidFinished:)
name: IJKMPMoviePlayerPlaybackDidFinishNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(PlaybackIsPreparedToPlay:)
name:IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification
object:nil];
//创建并播放
-(void) playVideo {
//新建播放器
if (_player) return;
_player = [[IJKFFMoviePlayerController alloc] initWithContentURLString:self.mSourceURL withOptions:nil];
CGRect rect = self.view.bounds;
_player.scalingMode = IJKMPMovieScalingModeAspectFit;
_player.view.frame = CGRectMake(0, 0, rect.size.width, 300);
[self.view insertSubview:_player.view atIndex:0];
[_player prepareToPlay];
}
接口说明
接口名称 | 功能描述 |
---|---|
create | 创建播放器 |
prepareToPlay | 初始化视频,准备播放 |
play | 开始播放视频 |
pause | 暂停视频播放 |
stop | 停止视频播放 |
isPlaying | 是否正在播放 |
shutdown | 销毁播放器 |
currentPlaybackTime | 当前播放时间 |
duration | 视频进度(回放视频有效) |
scalingMode | 画面拉伸尺寸 有IJKMPMovieScalingModeNone, IJKMPMovieScalingModeAspectFit, IJKMPMovieScalingModeAspectFill, IJKMPMovieScalingModeFill 四种方式 |
下面详细介绍一下各个成员函数的具体使用:
prepareToPlay
- (void) prepareToPlay
功能:根据视频文件内容初始化播放器实例,包括读取视频头,解析视频和音频信息,并根据视频和音频信息初始化解码器,创建下载(或读取本地文件)、解码、渲染线程等。
play
- (void) play
功能:播放当前视频 play的具体过程为:
- 验证是否有权限调用该函数
- 如果播放器在暂停或者准备完成的状态,则直接启动视频播放。
备注:播放器调用play进行播放,必须在播放器状态为准备完成的状态或者暂停的状态才能进行播放,其他情况都不能够将视频播放起来。
pause
- (void) pause
功能:暂停当前视频播放 pause的具体过程为:
- 验证是否有权限调用该函数。
- 其他情况则暂停视频播放,并将播放器状态设置为暂停状态。
备注:调用pause函数将暂停视频播放。一般在视频正在播放的情况下调用此函数。
stop
- (void) stop
功能:停止当前视频播放,调用此函数则是结束视频播放,视频显示为黑屏,并回到视频播放起始点。 stop的具体过程为:
- 验证是否有权限调用该函数。
- 其他情况则停止视频播放,并将播放器状态设置为停止状态,视频停止后会发送视频结束通知。
备注:调用该函数会释放音视频解码、渲染线程。如果需要重新进行播放,则需要再调用prepareToPlay重新对视频进行初始化。
常见问题
1、如何进行横竖屏切换播放?
点击切换到具体横屏或竖屏,可以直接改变播放器的view进行匹配。
2、回放到一半时播放失败了怎么办?
在error回调里根据具体业务做重连操作。
3、怎么拖动进度?
调用播放器setCurrentPlaybackTime:(NSTimeInterval)time。
4、怎么知道视频开始播放了?
开始播放可以通过IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification监听。
5、怎么进行大小窗切换?
可以对播放器视图进行操作,先移除大窗的播放器view,将该view添加到小窗口上。
6、怎么更换播放地址?
需要销毁上一个播放对象,移除上一个view。重新创建新的播放器对象,放置播放器视图