ijkplayer的集成和运用

匿名 (未验证) 提交于 2019-12-03 00:37:01

最近因项目需要了解和学习了关于直播的播放器集成,首先了解了ijkplayer的集成,ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明下面我记录一下我是如何在 iOS 中集成ijkplayer的,以便以后保存学习:

一、 下载ijkplayer
ijkplayer的下载地址:https://github.com/Bilibili/ijkplayer
下载解压成文件夹
二、编译ijkplayer
1、 用终端编译ijkplayer,其实也就是编译FFmpeg,打开终端cd进入ijkplayer-master文件夹
2、在此文件夹下进行操作,执行命令行 ./init-ios.sh, 这一步是去下载 ffmpeg 的, 时间会久一点, 耐心等一下

3、下载完成以后,cd 到 ios 目录中cd ios

4、然后依次执行./compile-ffmpeg.sh clean./compile-ffmpeg.sh all 命令,编译FFmpeg,过程有点长,耐心等待,
执行./compile-ffmpeg.sh all 命令时候可能出现下列问题:

此时 执行sudo xcode-select --switch /Applications/Xcode.app
执行完之后再次执行 ./compile-ffmpeg.sh all 如何没问题就可以走下一步,也有可能再次出现问题,如下

最新的 Xcode 已经弱化了对 32 位的支持, 解决方法:
compile-ffmpeg.sh 中删除 armv7 , 修改如:

FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
再重新执行出现错误的命令: ./compile-ffmpeg.sh all
三、打包IJKMediaFramework.framework框架
1、首先打开文件夹里面的工程


2、工程打开后设置工程的 scheme, 步骤如下图:


3、设置好 scheme 后, 分别选择真机和模拟器进行编译 command + B,
如果之前的步骤删除了 compile-ffmpeg.sharmv7, 这里会报错, 我们直接注释掉就好

编译完成后, 进入 Finder, 如下图


上面每个版本都有两种情况:模拟器状态和真机状态,然后需要合并这两个文件为一个文件
4、合并文件
打开终端 cdproduct 目录下,然后用终端合并:lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
说明:lipo -create 真机framework路径 模拟器framework路径 -output 合并的文件路径
合并完成以后会发现一个新的文件:

这就是合并完以后的文件;将生成的 IJKMediaFramework 文件替换掉 真机framework 中的 IJKMediaFramework 文件,然后这个替换掉文件的 真机framework 就是我们需要的 通用的framework了。

注:上面是演示的发布版本的,测试版本的framework已同样的方法合并、替换

四、导入你的项目中

1、直接将IJKMediaFramework.framework拖入到工程中即可
注意记得勾选 Copy items if needed 和 对应的 target

2、导入依赖的库
libc++.tbd ( 编译器选 gcc 的请导入 libstdc++.tbd )
libz.tbd
libbz2.tbd
AudioToolbox.framework
UIKit.framework
CoreGraphics.framework
AVFoundation.framework
CoreMedia.framework
CoreVideo.framework
MediaPlayer.framework
MobileCoreServices.framework
OpenGLES.framework
QuartzCore.framework
VideoToolbox.framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!