美文网首页DevSupportiOS-音视频ios-视频
IJKPlayer打包framework(包含https支持)

IJKPlayer打包framework(包含https支持)

作者: 天蚕 | 来源:发表于2017-06-01 18:24 被阅读1476次

    IJKPlayer只能支持http或者https其中之一,默认支持http,如果使用https那么需要做额外的配置

    获取源码

    //获取ijkplayer源码
    git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
    //进入源码目录
    cd ijkplayer-ios
    //切换分支
    git checkout -B latest k0.8.0
    

    配置多种格式支持(如果不需要多种格式可以跳过这一步)

    cd config
    rm module.sh
    ln -s module-lite-hevc.sh module.sh
    cd ..
    cd ios
    sh compile-ffmpeg.sh clean
    

    获取ffmpeg

    cd ..
     ./init-ios.sh
    

    https支持(https支持的静态文件libcrypto.a 和 libssl.a,如果不需要可以跳过这一步)

    ./init-ios-openssl.sh
    cd ios
    vim ../config/module.sh
    //在打开的文件中添加一行下面一行
    export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"
    ./compile-ffmpeg.sh clean
    

    编译

    ./compile-openssl.sh all(如果不需要可以跳过这一步)
    ./compile-ffmpeg.sh all
    

    配置framework(如果不使用https跳过这一步)

    用xcode打开ios目录下的IJKMediaPlayer工程
    如果不使用https,那么直接做常规framework打包即可
    如果使用https,那么需要手动添加libcrypto.a 和 libssl.a文件,默认不会添加
    然后再做framework打包即可
    

    注意:这两个依赖库的路径:ijkplayer-ios/ios/build/universal/lib,只有做了上面openssl相关的操作,才可以在这个目录下找到libcrypto.a 和 libssl.a

    打包framwork

    1、配置Release模式如果下图

    Snip20170601_1.png Snip20170601_3.png

    2、打包真机framework

    Snip20170601_5.png

    如图操作,然后编译即可

    3、打包模拟器framework

    Snip20170601_6.png

    如图操作,然后编译即可

    4、合并framework

    //lipo -create 真机framework路径 模拟器framework路径 -output 合并路径(这里的路径都需要包含文件名称)
    lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
    

    集成framework到项目中

    1、导入framework

    直接将framework拖入到工程中即可
    

    2、添加下列依赖到工程

    //1、libstdc++.tbd
    //2、libz.tbd
    //3、libbz2.tbd
    //4、AudioToolbox
    //5、UIKit
    //6、CoreGraphics
    //7、AVFoundation
    //8、CoreMedia
    //9、CoreVideo
    //10、MediaPlayer
    //11、MobileCoreServices
    //12、OpenGLES
    //13、QuartzCore
    //14、VideoToolbox
    

    按github中的demo使用即可

    https://github.com/Bilibili/ijkplayer

    问题

    遗留问题,有高手可以帮忙解决下

    1、明明在播放isPlaying()返回false

    https://github.com/Bilibili/ijkplayer/issues/1411
    可以尝试在播放器准备播放的回调中先暂停再播放

    @objc private func mediaIsPreparedToPlayDidChange(notification:Notification)
     {
        JLBLog("准备播放:\(notification)")
        player?.pause()
        player?.play()
    }
    

    2、内存泄漏,至今无解

    每次重新播放都会增加1~2M内存
    https://github.com/Bilibili/ijkplayer/issues/2144

    懒人脚本

    https://github.com/tiancanfei/IJKPlayer-framework-script

    相关文章

      网友评论

      • 6088245f8494:IOS SSL亲测可用,感谢博主!
      • 十二栗子:so 集成失败
      • 十二栗子:报了一个错,缺少libavfomat
      • smalldu:两个问题
        1、如果视频比较短 缓冲进度会有问题,比如10秒以内的短视频
        2、iOS 竖屏拍摄的视频 播放出来的是横着的。怎么解决。
        视频地址 https://videos.zuber.im/e82d18b4e74b53b14a741400/2018/03/12/5aa68c0180f03.mp4
        http或者https都可以
      • Mr_Me:我的手机 6P 系统10.1.1运行没有问题,我同事的一个5S 系统9.3运行崩溃,这种问题你遇到过吗
      • overla5:熊猫里面随便找个直播支持吗?
      • Leesim:不能同时支持https和http么? 那么如何版本过度?
      • 311d71c6828b:你好,请问https支持的话,是要打包IJKMediaFramework 还是 IJKMediaFrameworkWithSSL?
      • SkimTblog:使用模拟器编译IJKMediaFrameworkWithSSL.framework的时候报错,错误是mach-o,请问您知道为什么吗?
        SkimTblog:网上搜的说是libcrypto不支持32位
      • kuazi:你好,https支持 ,我这边编译IJKMediaFrameworkWithSSL.framework 一直报错ld: library not found for -lcrypto
        天蚕:@kuazi 我又做了一遍,编译没有问题啊
        kuazi:@天蚕 加了的。
        天蚕:制作framework的时候有木有添加libcrypto.a 和 libssl.a,看这提示是没有找到对应的库,这两个库是需要手动添加的

      本文标题:IJKPlayer打包framework(包含https支持)

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