美文网首页
xcode13 ijkPlayer打包

xcode13 ijkPlayer打包

作者: th先生 | 来源:发表于2022-03-31 18:08 被阅读0次

    可真不像想象中那样简单。折腾了一天。
    直接上命令
    github地址
    下载路径->桌面,会在桌面创建一个 'ijkplayer-ios'的文件夹

    cd Desktop
    

    克隆ijkplayer源码
    可能失败几次,多尝试。切换热点试试

    git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
    

    进入文件夹

    cd ijkplayer-ios
    

    切换最新版本

    git checkout -B latest k0.8.8
    

    从 'github '上下载 'ffmpeg' 等依赖,所以把 'init-ios.sh' 文件改一下,把' github'的源替换成 'gitee '的

    # IJK_FFMPEG_UPSTREAM=https://github.com/Bilibili/FFmpeg.git
    IJK_FFMPEG_UPSTREAM=https://gitee.com/yuazhen/FFmpeg.git
    
    # IJK_FFMPEG_FORK=https://github.com/Bilibili/FFmpeg.git
    IJK_FFMPEG_FORK=https://gitee.com/yuazhen/FFmpeg.git
    
    # IJK_GASP_UPSTREAM=https://github.com/Bilibili/gas-preprocessor.git
    IJK_GASP_UPSTREAM=https://gitee.com/yuazhen/gas-preprocessor.git
    
    #FF_ALL_ARCHS_IOS8_SDK="armv7 arm64 i386 x86_64"
    FF_ALL_ARCHS_IOS8_SDK="arm64 x86_64"#移除32位支持,i386 x86_64是模拟器的
    

    iphone5s起就开始全面支持arm64了
    执行:

    ./init-ios.sh
    

    配置解码器

    cd config
    
    module-default.sh 更多的编解码器/格式
    module-lite-hevc.sh 较少的编解码器/格式(包括hevc)
    module-lite.sh 较少的编解码器/格式(默认情况) 
    

    编辑module-lite.sh文件,添加下面2个配置

    export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"
    export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"
    

    删除当前的module.sh 文件

    rm module.sh
    

    创建软链接 module.sh 指向 module-lite.sh

    ln -s module-lite.sh module.sh
    

    添加 https 支持,最后会生成支持 https 的静态文件 libcrypto.a 和 libssl.a
    编辑/init-ios-openssl.sh

    #IJK_OPENSSL_FORK=https://github.com/Bilibili/openssl.git
    IJK_OPENSSL_FORK=https://gitee.com/yuazhen/openssl.git
    
    #pull_fork "armv7"
    #pull_fork "armv7s"
    pull_fork "arm64"
    #pull_fork "i386"
    pull_fork "x86_64"
    

    执行

    ./init-ios-openssl.sh
    

    编辑module-lite.sh文件,最后添加

    export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"
    

    重新生成软连接

    cd config
    rm module.sh
    ln -s module-lite.sh module.sh
    

    编辑iOS文件夹下的compile-openssl.sh compile-ffmpeg.sh,移除32位支持

    #FF_ALL_ARCHS_IOS8_SDK="armv7 arm64 i386 x86_64" 
    FF_ALL_ARCHS_IOS8_SDK="arm64 x86_64"
    
    cd ios
    

    //只clean一次,否则./compile-ffmpeg.sh allERROR: openssl not found

    ./compile-openssl.sh clean
    ./compile-openssl.sh all
    ./compile-ffmpeg.sh all
    

    接下来就需要摸索了。
    打开IJKMediaPlayer.xcodeproj
    选择IJKMediaFramework工程,edit-schemerun 选择relese

    工程下面没有Products文件夹,Xcode13默认没了。
    IJKMediaPlayer.xcodeproj右键显示包内容,打开project.pbxproj,
    搜索productRefGroup,将productRefGroup上面一行的mainGroup的值,复制给productRefGroup,再保存一下,Xcode就自动刷新出来了。

    image.png
    勾选
    image.png

    这里的引用,先删除,再手动添加一遍。(如果报错的话)


    image.png image.png

    头文件找不到,添加ios - build - universal - include目录下的文件,勾选引用。注意是蓝色文件夹。

    image.png
    哦,记得引入 libcrypto.alibssl.a。在ios - build - universal - lib
    测试需要依赖的库:
    libc++.tbd
    
    libz.tbd
    
    libbz2.tbd
    
    AudioToolbox.framework
    
    UIKit.framework
    
    CoreGraphics.framework
    
    AVFoundation.framework
    
    CoreMedia.framework
    
    CoreVideo.framework
    
    MediaPlayer.framework
    
    MobileCoreServices.framework
    
    OpenGLES.framework
    
    QuartzCore.framework
    
    VideoToolbox.framework
    
    

    测试:

    #import <IJKMediaFramework/IJKMediaFramework.h>
    IJKFFMoviePlayerController *player = [[IJKFFMoviePlayerController alloc] initWithContentURLString:@"" withOptions:[IJKFFOptions optionsByDefault]];
        player.view.frame = self.view.bounds;
        [self.view addSubview:player.view];
        [player prepareToPlay];
    

    查看framework支持的架构:

    1.进入到framework目录下
    cd /Users/.../xxxFramework.framework
    2.输入命令
    lipo -info  xxxFramework
    

    参考链接:
    https://www.jianshu.com/p/6ec0ec0244e2?utm_campaign=hugo
    https://www.jianshu.com/p/0706735f5bce
    https://www.jianshu.com/p/bec1be2e8081
    https://www.jianshu.com/p/ff8fd8c0c3c9

    相关文章

      网友评论

          本文标题:xcode13 ijkPlayer打包

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