美文网首页iOS开发技术
xcode集成ijkplayer k0.8.8版本遇到的问题

xcode集成ijkplayer k0.8.8版本遇到的问题

作者: ef43ffb32440 | 来源:发表于2018-04-08 19:55 被阅读11次

环境:XCode9

打开Mac的terminal执行以下脚本命令拉取ijkplayer源码和编译依赖库ffmpeg:

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.8.8

./init-ios.sh

cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

我拉取了当前最新的版本k0.8.8,具体的集成请参考:《带你走进脚本世界,ijkplayer之【init-ios.sh】脚本分析》和《【如何快速的开发一个完整的iOS直播app】(播放篇)》。

如图,打开IJKMediaDemo项目:


image.png

直接运行项目,发现编译失败:


image.png

错误提示:

ld: library not found for -lcrypto

xCode在编译工程时,遇到类似的ld: library not found for -l...的错误提示,原因:
通常这是由于工程在编译时找不到需要的链接库而导致的。

而这里具体是缺少crypto的库,这是openssl的东西,初步假设是ijkplayer k0.8.8版本强制依赖openssl库以支持播放https加密视频。

为了进一步验证假设,重复上面的命令,拉取ijkplayer k0.6.1版本的源码及依赖库ffmpeg:

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.6.1

./init-ios.sh

cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

用xCode打开IJKMediaDemo项目,直接运行,可以编译成功并成功运行。所以上面缺少openssl库的问题确实只是ijkplayer k0.8.8版本才有的问题。

如图,在ijkplayer-ios根目录下有一个init-ios-openssl.sh脚本,在ijkplayer-ios/ios目录下有一个compile-openssl.sh脚本:

  • init-ios-openssl.sh脚本:拉取openssl源码
  • compile-openssl.sh脚本:编译openssl源码
image.png

执行命令拉取openssl源码和编译openssl:

$ cd ..    进入到ijkplayer的目下
$ ./init-ios-openssl.sh   去远程仓库拉取openssl的远程代码

$ cd ios
$ ./compile-openssl.sh clean
$ ./compile-openssl.sh all

编译成功后,发现ijkplayer-ios/ios/目录下多了如图红圈中的5个文件夹:

image.png

build目录下:

image.png

build/universal/lib目录下找到libcrypto.alibssl.a文件,这就是前面编译失败缺失的链接库。要想xcode编译工程时找到这个链接库,就需要对工程进行相应的配置。

image.png

xCode选中当前项目target->Build Settings->Library Search Paths, 现在先只在Debug环境添加一条路径,将libcrypto.a文件所在目录的路径添加进来。

image.png

重新运行项目,编译成功,成功运行!

参考:
在xcode下用openssl写dh密钥交换,遇到“ld: library not found for -lcrypto”问题(已解决)
ijkplayer库的编译带OPENSSL

相关文章

网友评论

    本文标题:xcode集成ijkplayer k0.8.8版本遇到的问题

    本文链接:https://www.haomeiwen.com/subject/vmymhftx.html