iOS 拉流使用 IJKPlayer 的集成

  最近侯哥换了工作,下个项目用到直播的功能。虽然侯哥之前的工作是在某直播平台做iOS 端开发,但只做过前端页面相关内容,推流拉流都是引擎组封装好的库文件,直接使用即可。这两天研究了下推拉流,决定拉流使用 IJKPlayer,本文记录一下集成过程以及遇到的问题。

  ijkplayer是bilibili的一个开源项目 https://github.com/Bilibili/ijkplayer

首先下载ijkplayer

  地址就是:https://github.com/Bilibili/ijkplayer

      下载下来之后,解压

编译ijkplayer

  在解压后的文件 ijkplayer-master 中的 README 中可以看到,编译需要相关环境。我的电脑上已经安装了 homebrew,git,可以使用一下代码检测:

  brew -v

      git --version

      还需要安装 yasm

  brew install yasm

开始编译

  1. cd 到 ijkplayer-master 文件夹中,执行  ./init-ios.sh

  2. 等待执行完毕后,cd 到 ios 目录中,在终端依次执行./compile-ffmpeg.sh clean ./compile-ffmpeg.sh all命令

    此时遇到了第一个问题:

      xcurun sdk iphonos clang is unable to create an executable file c compiler test failed

    解决:因为装过多个xcode 版本,是xcode 的路径问题,修改一下

          sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer

 

       3. 重新执行./compile-ffmpeg.sh clean ./compile-ffmpeg.sh all命令

    遇到了第二个问题:

    error: unknown directive   .arch armv7-a

    解决:这是因为新版本的 xcode,弱化了对 armv7 的支持导致的,使用文本工具打开 compile-ffmpeg.sh

      这里将 armv7 去掉,重新执行./compile-ffmpeg.sh clean ./compile-ffmpeg.sh all命令。耐心等待后,终于完成。

因为去掉了 armv7,之后集成到项目中也不能对 armv7 进行支持,所以项目中架构也得去掉 armv7。iPhone 5s及以上都是64位的ARM CPU了,影响不大。

打包IJKMediaFramework.framework

  1.   打开工程 IJKMediaPlayer.xcodeproj
  2.   首先调整 editScheme 中,Run 改为 release;
  3.   然后选择项目 IJKMediaFramework,分别编译模拟器和真机;
  4.   找到路径,终端合成,lipo -create "真机路径" "模拟器路径" -output "合成后的路径"

    这里遇到了问题三:

      can't map input file: IJKMediaFramework.framework

    解决:因为命令需要的参数是 IJKMediaFramework.framework/IJKMediaFramework

  5.        最后, 将新生成的 IJKMediaFramework.framework 中的 IJKMediaFramework 拖到 Release-iphoneos/IJKMediaFramework.framework 中,替换原来的。

 

集成到项目中

  Release-iphoneos/IJKMediaFramework.framework 这个就是我们所需要的,集成到工程中,添加依赖库,编译通过。

      依赖库如下:

 

 

参考文章:

https://www.jianshu.com/p/1f06b27b3ac0

https://www.jianshu.com/p/65fb80dff4d6

https://github.com/bilibili/ijkplayer/issues/4494

https://www.jianshu.com/p/e4e4f7f3767d

 

 

 

posted @ 2019-11-27 17:10  侯文超  阅读(471)  评论(0编辑  收藏  举报