美文网首页andnroidAndroid UI相关Android
IJKPlayer编译so支持HTTPS的踩坑历程

IJKPlayer编译so支持HTTPS的踩坑历程

作者: 恋猫月亮 | 来源:发表于2016-12-20 09:36 被阅读7961次
    hello,大家好,我是那个太监许久的郭同学,这段时间发生了一些不愉悦的事情,进入了不务正业的状态,但是···┑( ̄Д  ̄)┍ who care呢?我也知道没人会想念我的,所以就没怎么更新了,绝对不是因为懒哟。︿( ̄︶ ̄)︿

    同志,github来过没?右转不屑 ----> https://github.com/CarGuo

    1、前言

    为什么要编译?因为默认IJK居然不带HTTPS?Why?因为爱情,不会轻易悲伤···这就是爱吧((/- -)/。

    编译IJK的动态链接库,绝对是对于win党最大的打击,经常是裤子脱了一半,发现拉链卡住,而且还很痛,上也不是,不上也不是的蛋碎感(ノಠ益ಠ)ノ彡┻━┻,官方都说了:on Cygwin (unmaintained),Linux和Mac的胜利。如果你坚持,也许你就会遇上它们:

    • 安装Cygwin的时候,记得把make选上。
    • $'\r': 未找到命令 : dos2unix xxx,把所有你会编译到的.sh都轮一遍,你以为完了?不,编译生成出来的version.sh和configure也需要。
    • mingw32-gcc.exe: error: CreateProcess: No such file or directory,据说是文件路径太深了,然而IJK的路径,本来就好深,所以你要把IJK的环境在整一遍,反正到这里我就放弃了治疗啦(ˉ ̄~) 。
    2、VMware + Ubuntu编译环境

    作为一个win党,头顶青天,个人马上把电脑里尘封已久的虚拟机搬出来了,个人装的是Ubuntu,加上VMtools,妥妥的,环境搭建我就不唠叨了,这里走起《VMware安装Ubuntu教程,Linux下搭建Android开发环境》。家中常备,总有一天你会用得上。注意NDK r10e以上,虚拟机硬盘尽量选大一点,不然后面扩展容量又是一番功夫。

    3、编译带HTTPS的so

    到了这里你就简单多了,因为是亲生的啊,这时候就是机械化流程啦(✿‿)。

    • 打开终端命令,安装需要程序。
    sudo apt-get install git
    sudo apt-get install yasm
    
    • 下载IJKPlayer源码,在命令终端里cd到ijk的根目录
    • 切换到release版本的tag下,当然,你也可以直接在master
    git checkout -B k0.7.5  //这个版本参考ijk的依赖库版本
    
    • 流程化脚本编译
      1、编译前选择你的配置
      If you prefer more codec/format
    cd config
    rm module.sh
    ln -s module-default.sh module.sh
    

    If you prefer less codec/format for smaller binary size (include hevc function)

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

    If you prefer less codec/format for smaller binary size (by default)

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

    2、初始化openSSL和FFMPEG
    这里会同步下载对应的代码,所以可能会比较耗时哟,

    ./init-android-openssl.sh
    ./init-android.sh
    

    3、编译
    cd到android/contrib下,执行清除命令,然后编译需要的so,这里的all是生成所有版本的,如果只需要对应版本的,可以把all替换成armv7a等你需要的版本。编译需要一段时间,这时候你可以找个妹子先吹吹水。︿( ̄︶ ̄)︿

    ./compile-openssl.sh clean//清除
    ./compile-ffmpeg.sh clean//清除
    ./compile-openssl.sh all//编译
    ./compile-ffmpeg.sh all//编译
    

    4、生成对应so
    切换到android目录下,执行脚本就可以生成so啦,感觉一路顺畅,一泻千里有木有。

    ./compile-ijk.sh all
    

    生成的so每种类型有三个,传说,ffmepg的so大于3M就是https成功的标志啦!


    最后注意

    1、最后不要忘记,在你的gradle里面加入下方的配置哟,不然app会找不到你的so的。


    2、如果你觉得你的包so太大了,可以使用下图的ndk过滤,随时控制你想支持的so,具体可参看Android蹲坑的疑难杂症集锦(兼Gradle) 二

    3、如果需要编译其他播放类型支持,可以修改module.sh下的配置来使能。

    4、IJKplayer 编译rtsp、rmvb支持

    相关的so已经集成到播放器里面,需要的可以直接拿出来用,下方链接走起<( ̄︶ ̄)>,点我点我。

    https://github.com/CarGuo/GSYVideoPlayer

    多日♂不见

    相关文章

      网友评论

      • DaZenD:你好,你那个群,现在拒绝所有人加入,收费也可,1161528363,请把我拉进去,有问题请教
      • longmingren123:你那个QQ群还收费啊?
        恋猫月亮:@longmingren123 后来人多了,快上限了,就设置了收费。大部分时候是水群,请不要介意。
      • 想回老家了:为什么我编译的只有2.7Mne
      • 不辣先生:请问现在Github 上的用的是ijk哪个版本的库
        恋猫月亮:@不辣先生 0.8.4
      • 工藤就二:大神请问一下提示You need the NDKr10e or later,但是我的NDK已经是r14b了,这个怎么解决啊?
        Jinxxxx:同样遇到这样的问题,请问你解决了吗
      • Coding丁:/Users/skd/ijkplayer-android/android/contrib
        skddeMacBook-Pro:contrib skd$ ./compile-ffmpeg.sh all
        ====================
        [*] check archs
        ====================
        FF_ALL_ARCHS = armv5 armv7a arm64 x86 x86_64
        FF_ACT_ARCHS = armv5 armv7a arm64 x86 x86_64

        ====================
        [*] check env armv5
        ====================
        FF_ARCH=armv5
        FF_BUILD_OPT=

        --------------------
        [*] make NDK standalone toolchain
        --------------------
        build on Darwin x86_64
        ANDROID_NDK=
        You must define ANDROID_NDK before starting.
        They must point to your NDK directories.
        根据ijkplayer文档遇到了这个问题
      • 温温温888:po主能帮忙重新编译个支持wmv格式的.so给我吗 , 学生党没有Mac也没有装Ubuntu
        恋猫月亮: @温温温888 文章中有虚拟机环境搭建相关的。linux系统还是有了解的必要的
        温温温888:@恋猫月亮 谢谢Po , 最近两天都在捣鼓ubuntu , 但是有很多不懂的地方 , 现在卡住了...:joy:
        恋猫月亮: @温温温888 可以装个虚拟机,以后对你也很有帮助的。编译一个其实还是稍微费时间的
      • 30d510f59682:我编译后没有arm64-v8a这个so,请问是怎样解决?
        恋猫月亮: @cbbs arm64这个文件下的lib没有?
        30d510f59682:@恋猫月亮 ./compile-ffmpeg.sh clean 这步吗?有做的。我按他的说明来做的。
        恋猫月亮: @cbbs clean干净之后,再编译all
      • 054d8001b759:请问设置硬解码支持rmvb,但是ijk要如何才能硬解码播放得了rmvb?在线等。
        054d8001b759:@恋猫月亮 好的,谢谢指点。
        恋猫月亮:@JiannaiJ 修改config下的moudle.sh,加上rmvb支持
      • 老年追梦人:主任 我只想开你开车
        恋猫月亮: @老年追梦人 刚好看到了
        老年追梦人:@恋猫月亮 我靠 回复这么快
        恋猫月亮: @老年追梦人 最近车抛锚了😉
      • SuperStarBoy:亲爱的大神,我想问下ijkplayer支持自定义流加密、解密吗?是不是需要改so啊?因为公司的服务器给的是加密的音频流,所有不能直接放到播放器,中间怎么解密呢?求大神多多指教!
      • smartapple:请教一下。最近刚好在弄这个ijkplayer 看到所有介绍的 都是从cgwin 开始 介绍环境 然后执行编译。这样 所有的人貌似都是做的一样的工作呢。具体的有点不同我想就是生成的需要的版本不同。我想请教一下 如何自己定制ijkplayer 小白求教…
        恋猫月亮:@四条眼的小胖子 4年没更新了???k0.7.5上个月才更新的啊····issue也是对应有人在回复啊,改源码的话看需求啦,如果你需要改到的话,一般是不用的,就改改配置,你确定你上的是https://github.com/Bilibili/ijkplayer???
        smartapple:@恋猫月亮 谢谢提议。还有一点,至于你们所说的编译会去改动ijkplayer的源码吗? 而且去官网看,都已经四年没更新了… 还有木有其他比较好的开源项目啊?
        恋猫月亮:@四条眼的小胖子 cgwin是在win上的,个人不建议,因为问题太多了,而且可能很辛苦编译完了so还跑不起来,你看issue就知道最后好多人都弃坑了。搞一个虚拟机吧,编译不同版本只需要all或者./compile-ffmpeg.sh armv5|armv7a 这样,过程顺畅无比。文中有链接叫你快速搭建虚拟机环境。我真切的建议你,每个用cgwin不成功的在ijk提的issue都被告知,这个已经不维护了,官方首页也说了。
      • 325285183a69:大神为了开源精神佩服佩服:smile:
        恋猫月亮:@奋斗的骚年 就是爱折腾而已😁

      本文标题:IJKPlayer编译so支持HTTPS的踩坑历程

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