https://www.cnblogs.com/wang19941006/p/6761729.html
前言
ijkplayer
框架是专门用来做 视频直播 的开源框架,基于ffmpeg
,同时支持 Android 和 iOS 平台。
对于 App 中的直播功能,如果我们成功集成ijkplayer
,那么就算完成一半的工程了。接下来,只要获取到 拉流 URL,就能实现视频直播
功能了。
但是初次集成这个框架,对于新手还是有一定难度的。
本篇主要介绍如何快速集成 ijkplayer
框架。
一、下载 ijkplayer
1、下载 ijkplayer 框架源码
2、打开终端,通过 git clone 进行下载
第一步: cd
进入指定的下载路径。
cd /Users/XDLee/Desktop/Live
第二步: 通过 git clone
命令进行下载。
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
下载过程比较耗时,耐心等待~~~
二、编译 ffmpeg
1、下载完成,运行Demo,看看效果。
ijkplayer
框架的目录结构如下:
2、打开 IJKMediaDemo,并编译
提示: 'libavformat/avformat.h' file not found
原因: libavformat
是 ffmpeg
框架中的库,而 ijkplayer
又是基于 ffmpeg
框架的,因此需要导入 ffmpeg
。
解决办法: 查看 ijkplayer
的 README.md。
3、按照 README 中的说明下载并编译编译 ffmpeg
以下是 iOS 环境下下载并编译 ffmpeg 的步骤
第一步: 实际上就是下载 iOS 版的 ijkplayer
,我们已经下载过了。
第二步: 切换到 ijkplayer-ios
目录。
cd ijkplayer-ios
第三步: 表示创建并切换到 latest
分支。
git checkout -B latest k0.7.9
执行第三步之前,项目分支为 master
执行完第三步,项目分支为latest
执行终端命令png
注意:第三步创建分支的操作不是必须要做的,但是学习开源框架建立分支是一个好习惯。
第四步:下载 ffmpeg
源码
./init-ios.sh
init-ios.sh
表示一个shell
脚本文件,它的作用就是 下载 ffmpeg 源码./
表示在当前文件./init-ios.sh
表示在当前文件夹执行脚本文件,下载 ffmpeg 框架
这个过程比较耗时,耐心等待~~~
N min后!!!
下载完成,就会发现 ijkplayer
中有 ffmpeg
了。
下载好 ffmpeg,再次编译 Demo
- 发现: 还是报错
'libavformat/avformat.h' file not found
- 原因:
执行 init-ios.sh,
仅仅是下载源码,但是源码并没有参与编译,需要把源码编译成.a 文件
。` - 另外:
IJKMediaDemo
依赖IJKMediaPlayer
,如图
第五步: 打开 IJKMediaPlayer
,查看源码IJKMediaPlayer
位置
发现找不到对应的 .a 库
发现: ffmpeg 中的库都是红的,表示不存在,需要进行编译。
解决: 继续查看 ijkplayer 的 README
第六步: 编译 ffmpeg 库,分为三小步
步骤一: 进入脚本文件的目录下
步骤二: 执行 ./compile-ffmpeg.sh clean
./compile-ffmpeg.sh clean的作用
:
删除一些文件和文件夹,为编译 ffmpeg.sh
做准备,在编译ffmpeg.sh
的时候,会自动创建刚才删除的那些文件,为避免文件名冲突
,因此在编译ffmpeg.sh
之前,先删除等一会会自动创建的文件及文件夹。
步骤三: 执行./compile-ffmpeg.sh all
,真正地编译各个平台的 ffmpeg
库,并生成所有平台的通用库
执行 ./compile-ffmpeg.sh all 之前
执行 ./compile-ffmpeg.sh all
执行脚本,编译 ffmpeg,编译需要一段时间,耐心等待
看到下面的界面,表示编译完成
编译完成之后
第七步: 再次运行 IJKMediaDemo
首先: 打开 IJKMediaPlayer,查看 ffmpeg 的库文件是否生成
可以看到: ffmpeg 的 .a库都已经生成了。
然后: 打开 IJKMediaDemo,并运行
运行成功,但是显示如下:
原因: IJKMediaDemo 工程配置中,只支持横屏
那么,到此,整个 ffmpeg 的编译工作就全部做完了。