• 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

     

     

  • 相关阅读:
    Linux安装.net core
    在IIS中如何配置SSL(https)
    Lambda的前世今生
    Java建造者模式
    leetcode 83 Remove Duplicates from Sorted List
    【设计】Office
    【设计】简书品牌重构
    【设计总结】
    【交互设计】
    【设计总结】
  • 原文地址:https://www.cnblogs.com/lion-witcher/p/11943690.html
Copyright © 2020-2023  润新知