ijkPlayer 集成
参考地址
ijkplayer 是一款做视频直播的框架,基于 FFmpeg,支持 Android 和 iOS。这里介绍一下 iOS 中集成 ijkplayer
一、FFmpeg
FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了领先的音/视频编码库 libavcodec 等。
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构
和读取音视频帧等功能;
libavcodec:用于各种类型声音/图像编解码;
libavutil:包含一些公共的工具函数;
libswscale:用于视频场景比例缩放、色彩映射转换;
libpostproc:用于后期效果处理;
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用 ffmpeg 库解析和解码,通过 SDL 显示;
支持的编码
源自 FFmpeg 项目组的两个视频编码:
Snow
FFV1
支持的格式
ASF
AVI
BFI[7]
IFF[8]
RL2[9]
FLV
MXF, Material eXchange Format, SMPTE 377M
Matroska
Maxis XA[10]
MSN Webcam stream[11]
MPEG transport stream
TXD[6]
OMA[12]
GXF, General eXchange Format, SMPTE 360M
mov,mp4,m4a,3gp,
支持的协议
HTTP
RTP
RTSP
RealMedia RTSP/RDT
TCP
UDP
Gopher
RTMP
RTMPT, RTMPE, RTMPTE, RTMPS (via librtmp)
SDP
MMS over TCP
二、下载 ijkplayer
ijkplayer 下载地址:https://github.com/Bilibili/ijkplayer
下载完成后解压, 解压后文件夹内部目录如下图:
三、编译
其实这里主要是编译 FFmpeg,因为他是一个 C 语言的跨平台库,需要 sh 脚本来进行编译
- 打开终端, cd 到 jkplayer-master 文件夹中, 也就是下载完解压后的文件夹, 如下图:
- 执行命令行**./init-ios.sh**, 这一步是去下载 ffmpeg 的, 时间会久一点, 耐心等一下.如下图:
- cd 到 ios 目录中
- 执行**./compile-ffmpeg.sh clean**
- 执行**./compile-ffmpeg.sh all**进行 FFmpeg 的编译,时间较久
四、打包 IJKMediaFramework.framework 框架
其实集成 ijkplayer 有两种方法,一种是按照 Demo 中的导入 IJKMediaPlayer.xcodeproj,此方法不是很推荐
下面主要说另一种把 ijkplayer 打包成 framework 导入工程中使用.
首先打开工程 IJKMediaPlayer.xcodeproj,
选择 IJKMediaFramework 点击 EditScheme
选择 release
设置好 scheme 后, 分别选择真机和模拟器进行编译, 编译完成后, 进入 Finder,
下面开始合并真机和模拟器版本的 framework, 注意不要合并错了, 合并的是这个文件, 如下图:
打开终端, 进行合并, 命令行具体格式为:
lipo -create 真机版本路径 模拟器版本路径 -output 合并后的文件路径
合并后如下图
用合并后的 IJKMediaFramework 把原来的 IJKMediaFramework 替换掉
五、在 iOS 项目中集成 ijkplayer
新建工程, 导入合并后的 IJKMediaFramework.framework 以及相关依赖框架以及相关依赖框架,如下图:
导入框架后在 ViewController.m 中进行 buid,如果成功,说明集成成功。然后可以在控制器中写一个 Demo 测试
可以是 mp4 格式,也可以是 m3u8,rtmp,hls 等流媒体