美文网首页
ijkplayer-iOS框架制作

ijkplayer-iOS框架制作

作者: 一个老实人 | 来源:发表于2022-05-27 18:34 被阅读0次

    IjkPlayer是bilibili(b站)开源的视频+直播框架,底层基于FFmpeg封装,并且同时支持Android 和 iOS 平台。

    由于IjkPlayerSDK框架在ijkplayer demo中并没有直接提供,demo里只提供了编译脚本,需要我们手动编译。

    首先下载ijkplayer

    https://github.com/bilibili/ijkplayer
    1.下载后放在桌面不需要改动任何文件里的内容
    (我看网上有些文章说SDK会编译失败 ,需要改动里面一些文件内容。但是我这里并没有出现)

    下载后打开文件夹里面有很多文件,包含了 iOS跟 Android的, 我们只需要管 iOS 的就行

    需要用到的文件截图

    打开IJKMediaPlayer工程

    ijkplayer-master > iOS > IJKMediaPlayer > IJKMediaPlayer.xcodeproj
    这个工程就是我们需要用到的编译ijkplayer框架的工程。 (其他的这里先不做介绍)
    工程路径截图

    打开工程后你会发现这个工程中有2处是缺少文件的

    第一处 缺少ffmpeg 整个文件都是红的
    第二处 Frameworks 文件中 缺少 libcrypto.a libssl.a
    缺少文件展示截图

    我们要做的就是把这2处缺失的文件补好,这些脚本已经帮我们写好了,我们只需要执行命令就行,然后通过这个工程编译出我们需要的ijkplayer框架

    注意⚠️ 编译出了的文件不需要动他的路径

    1.执行命令 ./init-ios.sh

    1. cd到 ijkplayer-master 文件夹里
    2. 执行命令 ./init-ios.sh (下载fmpeg 要保证网络连接通畅)
    注!这一步容易断网报错 443 或者 500 (如下图),可能服务器不在国内吧 ,反正出现网络问题自己解决
    成功后 iOS 文件夹里会出现 不同架构的ffmpeg

    ffmpeg-arm64
    ffmpeg-armv7
    ffmpeg-i386
    ffmpeg-x86_64


    2.执行命令 ./init-ios-openssl.sh

    截屏2022-05-27 下午4.33.09.png
    成功后 iOS 文件夹里会出现 不同架构的openssl

    openssl-arm64
    openssl-armv7
    openssl-i386
    openssl-x86_64


    3. 执行命令 ./init-config.sh

    4. 执行命令 cd ios (进入ios文件夹)

    5. 执行命令 ./compile-ffmpeg.sh clean (清理文件)

    6. 执行命令 ./compile-openssl.sh clean (清理文件)

    7. 执行命令 ./compile-openssl.sh all (编译 openssl )

    得到 缺少的 libcrypto.a libssl.a

    8. 执行命令 ./compile-ffmpeg.sh all (编译 ffmpeg )

    第八步完毕后 我们IJKMediaPlayer所缺少的文件 跟框架都有了
    ijkplayer-master/ios/build/universal/lib

    9.编译ijkplayer框架

    1.再次打开IJKMediaPlayer工程
    2.选择 IJKMediaFramework (下面 红色箭头指向的)
    3.Frameworks下面 libcrypto 和 libssl 依然是红色 不用管

    10.合并真机跟模拟器

    1. 真机跟模拟器的都跑一遍 然后进行合并 (开发期间 跑Debug 模式)
    注意:合并的文件是下面截图的文件
    2. lipo -create 真机路径 模拟器路径 -output 输出路径
    3. 合并后以前的文件不会消失 ,所以我们需要把 IJKMediaFramework.framework 中 IJKMediaFramework 替换为合并后的 IJKMediaFramework

    11.导入工程

    添加系统库
    AudioToolbox
    AVFoundation
    CoreMedia
    CoreVideo
    libbz2
    libz
    MediaPlayer
    MobileCoreServices
    OpenGLES
    VideoToolbox

    导入头文件 编译成功

    最后提一句 我们编译的库有多个架构版本,如果有些架构不需要的话 在开始前,我们就要去修改脚本文件

    比如init-ios.sh
    如果删除init-ios.sh中不需要的架构,那么ios/compile-ffmpeg.sh和ios/compile-openssl.sh也要一起修改,不然编译的时候会报错。

    相关文章

      网友评论

          本文标题:ijkplayer-iOS框架制作

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