IOS 播放器 sdk

概述

IJKFFMoviePlayerController 是一款基于 IOS 平台的多媒体视频播放 SDK。它为 IOS 的开发者提供了简单易用的接口,帮助 开发者方便快捷、低门槛的实现多媒体播放功能的开发。它支持 HLS、RTMP、HTTP FLV、MP4 等多种流媒体播 放格式,视频支持 h264 格式、音频支持 AAC 格式。另外,针对直播用户的需求,还增加了首帧秒开的功能;同 时为了减少直播的延迟,增加了弱网条件下播放的跳帧功能。

功能

支持HLS、RTMP、HTTP FLV、mp4等流格式 支持h264+aac 支持armv7、arm64 支持直播首帧秒开 支持弱网条件下的丢帧策略 支持多实例,支持https 支持带切边的视频渲染模式

阅读对象

本文档面向所有使用该SDK的开发人员、测试人员以及对此感兴趣的用户,要求开发者对播放器的基本功能有一定的了解。

开发准备


设备和系统版本

ios8.0 及以上 iphone5 及以上

安装包说明

  1. demo:主要存放了调用 SDK 的示例工程,可以帮助用户了解如何使用该 SDK。
  2. lib:播放器 SDK 开发包,包含播放器 framework 文件,需要在您的工程中进行引用。其中,arm 目录下面的 framework 仅支持 armv7 和 arm64 平台,arm&simulator 目录下面的 framework 除了 armv7、arm64 外,还 支持 x86、x86_64,可以用作模拟器调试。

快速开发

开发环境配置

  1. 需要准备 iOS 的运行环境(XCode8.0 以上版本,iOS SDK8.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 准备开始播放,传入要播放的视频地址。
  4. 调用 play 接口进行播放。

下面以 demo 为例来详细说明上面的这些步骤。

//将需要播放的视频添加到视频列表中
//如果需要播放本地视频,则将本地视频拷贝到应用程序的 Document 目录下即可
-(void) addVideoToList
{
    //按照如下格式进行添加,videoName 是在列表中显示的名字
    [videolists setObject:@"http://yourVideoAddress.m3u8" forKey:@"videoName"];
}

-(void) playVideo {
    //新建播放器
    if (_player) return;
           _player = [[IJKFFMoviePlayerController alloc]initWithContentURLString:self.mSourceURL withOptions:nil];
           [_player setOptionIntValue:1 forKey:@"videotoolbox" ofCategory:kIJKFFOptionCategoryPlayer];
        CGRect rect = self.view.bounds;
        _player.view.frame = CGRectMake(0, 0, rect.size.width, 300);
        _player.view.tag = _tag;
           [self.view insertSubview:_player.view atIndex:0];
           _tag++;

         [_player setPlayerOptionIntValue:5000 forKey:@"max_cached_duration"];

         [_player setShouldShowHudView:NO];
         [_player prepareToPlay];
}

播放器可配置参数与可选功能

配置参数 用途描述
timeout 设置网络超时断开链接的时间
dropBufferDuration 设置直播过程中缓冲区视频丢帧的起始时间,若缓冲区中视频帧的时长超过这个值, 则开始丢帧操作。设置这个参数可以控制直播延时的长度,参数值越小则直播的延迟 越小。

seek 功能

接口名称 用途描述
seekTo seek 到指定位置之前的最近的一个关键帧
seekToAccurate 精准跳转到指定位置

若需要了解上述功能和接口的详细用法,请参照下节的接口说明。

接口说明

接口名称 功能描述
create 创建播放器
prepareToPlay 初始化视频,准备播放
play 开始播放视频
pause 暂停视频播放
stop 停止视频播放
reset 重置播放器
destroy 销毁播放器
view 设置播放显示窗口

下面详细介绍一下各个成员函数的具体使用:

prepareToPlay

- (void) prepareToPlay

功能:根据视频文件内容初始化播放器实例,包括读取视频头,解析视频和音频信息,并根据视频和音频信息初始化解码器,创建下载(或读取本地文件)、解码、渲染线程等。

prepareToPlay的具体过程为:

  • 验证用户是否有权限调用该函数。
  • 验证参数dataSource是否为空。 -对视频进行初始化,如果成功,则会发送LoadDidPreparedNotification通知,表示视频初始化完成。如果失败则会发送PlaybackErrorNotification通知,在错误通知中可以获取到错误代码。

play

- (void) play

功能:播放当前视频 play的具体过程为:

  • 验证是否有权限调用该函数
  • 如果播放器在暂停或者准备完成的状态,则直接启动视频播放。

备注:播放器调用play进行播放,必须在播放器状态为准备完成的状态或者暂停的状态才能进行播放,其他情况都不能够将视频播放起来。

pause

- (void) pause

功能:暂停当前视频播放 pause的具体过程为:

  • 验证是否有权限调用该函数。
  • 其他情况则暂停视频播放,并将播放器状态设置为暂停状态。

备注:调用pause函数将暂停视频播放。一般在视频正在播放的情况下调用此函数。

stop

- (void) stop

功能:停止当前视频播放,调用此函数则是结束视频播放,视频显示为黑屏,并回到视频播放起始点。 stop的具体过程为:

  • 验证是否有权限调用该函数。
  • 其他情况则停止视频播放,并将播放器状态设置为停止状态,视频停止后会发送视频结束通知。

备注:调用该函数会释放音视频解码、渲染线程。如果需要重新进行播放,则需要再调用prepareToPlay重新对视频进行初始化。

timeout

int timeout

功能:设置播放器网络超时时间,默认为15000毫秒。 备注:当播放网络视频时候,如果网络较差或者无网络的情况下,播放器此时会等待timeout的时间才会抛出网络异常的通知,用户收到此通知后进行处理,否则会一直等待。

results matching ""

    No results matching ""