ijkplayer介绍
B站开源的视频播放框架,基于ffmpeg,支持Android和iOS
github链接
编译生成静态库
- Build iOS(按照ijkplayer文档执行)
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.8.0
./init-ios.sh
cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
创建一个新项目,并将
ijkplayer-ios/ios/IJKMediaPlayer
目录下的IJKMediaPlayer.xcodeproj拉进项目中.-
选择
Target
为IJKMediaFramework
,然后点击Edit Scheme
按钮
-
设置
Run
->info
->Build Configuration
的值为Release
分别选择
模拟器
和真机
,进行一次Bunild.在Products文件夹下就可以看到生成的.framework
- 右击
IJKMediaFramework.framework
,选择Show in Finder
,可以找到适用于模拟器
和真机
的两个静态库
-
lipo -info
查看信息
cd Release-iphonesimulator/IJKMediaFramework.framework
lipo -info IJKMediaFramework
//输出Architectures in the fat file: IJKMediaFramework are: i386 x86_64
cd Release-iphoneos/IJKMediaFramework.framework
lipo -info IJKMediaFramework
//输出Architectures in the fat file: IJKMediaFramework are: armv7 arm64
- 最后在
Product
目录下执行合并的命令,你就可以得到一个即支持模拟器又支持真机的静态库了
lipo -create Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
- 将生成的
IJKMediaFramework
文件,复制到Release-iphoneos/IJKMediaFramework.framework
目录下,替换掉原来的IJKMediaFramework
. - 至此完整的
IJKMediaFramework.framework
已经生成,可以直接放到项目中使用了.
注意事项
ijkplayer的文档中列出了一些可能需要添加的依赖库 (Maybe something else, if you get any link error)
- AudioToolbox.framework
- AVFoundation.framework
- CoreGraphics.framework
- CoreMedia.framework
- CoreVideo.framework
- libbz2.tbd
- libz.tbd
- MediaPlayer.framework
- MobileCoreServices.framework
- OpenGLES.framework
- QuartzCore.framework
- UIKit.framework
- VideoToolbox.framework
我遇到的问题
Undefined symbols for architecture x86_64:
解决方法:添加
libstdc++.tbd