IOS播放器SDK

优质
小牛编辑
130浏览
2023-12-01

概述

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架构,可以在真机和模拟器调试。

快速开发

开发环境配置

  1. 需要准备 iOS 的运行环境(XCode9.0 以上版本,iOS SDK9.0 以上版本),以及硬件 CPU 支持 ARMv7、ARMv7s 或 ARM64 的 iOS 设备。

sdk 包添加

使用 Xcode 创建工程的方法如下:

  1. Xcode 创建一个 iOS 应用工程。
  2. 将 SDK 中的 framework 添加到工程中 点击“Add Other...”,选中 framework. 点击“Open”. 点击“Finish” 完成 framework 的添加

  3. 将 SDK 中的头文件 IJKFFMoviePlayerController.h 包含到工程中。

demo 示例

在 SDK 中提供了 Demo,此 Demo 是用播放器 SDK 开发了一个完整的视频播放器,用户可以参考 Demo 进行播 放器的开发。

使用 SDK 开发播放器时,基本的开发步骤为:

  1. alloc 播放器后,调用 create 创建播放器,并传入 view 显示窗口
  2. 注册通知响应函数。
  3. 传入要播放的视频地址,调用 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。重新创建新的播放器对象,放置播放器视图