美文网首页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