[关闭]
@natsumi 2019-04-10T05:45:34.000000Z 字数 1713 阅读 366

IjkPlayer 编译 so 支持 HTTPS

Android IjkPlayer


1. 环境 check

  1. # add these lines to your ~/.bash_profile or ~/.profile
  2. # export ANDROID_SDK=<your sdk path>
  3. # export ANDROID_NDK=<your ndk path>

切到目前最新的 release k0.8.8

2. 配置选择

  1. cd config
  2. rm module.sh
  3. ln -s module-default.sh module.sh # more codec/format
  4. ln -s module-lite-hevc.sh module.sh # less codec/format for smaller binary size (include hevc function)
  5. ln -s module-lite.sh module.sh # less codec/format for smaller binary size (by default)

这些 module-XXX.sh 里面其实是 ffmpeg 的 configure 参数,具体含义可以通过 ffmpeg 的 configure --help 查看

3. 初始化openSSL和FFMPEG

这里会同步下载对应的代码,会比较耗时

./init-android-openssl.sh: 下载 https://github.com/Bilibili/openssl.git
./init-android.sh: 下载 https://github.com/Bilibili/FFmpeg.git

4. clean & build

  1. cd android/contrib
  2. ./compile-openssl.sh clean
  3. ./compile-ffmpeg.sh clean
  4. ./compile-openssl.sh all
  5. ./compile-ffmpeg.sh all

编译openssl可能会提示 You need the NDKr10e or later
是 ndk 版本不对导致的,看环境检测的脚本 android/contrib/tools/do-detect-env.sh
只能是 11-14 =.=
这里下载 14b 然后修改环境变量 ANDROID_NDK
在重新编译

  1. case "$IJK_NDK_REL" in
  2. 11*|12*|13*|14*)
  3. if test -d ${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.9
  4. then
  5. echo "NDKr$IJK_NDK_REL detected"
  6. else
  7. echo "You need the NDKr10e or later"
  8. exit 1
  9. fi
  10. ;;
  11. *)
  12. echo "You need the NDKr10e or later"
  13. exit 1
  14. ;;
  15. esac

all 表示 依次编译 armv5 armv7a arm64 x86 x86_64
到x86的时候报错中断了。。

  1. ../../util/domd: fork: Resource temporarily unavailable
  2. make[2]: *** [depend] Error 128
  3. make[2]: Leaving directory `/Users/xietianrui/AndroidStudioProjects/ijkPlayer-compile/android/contrib/openssl-x86/crypto/camellia'
  4. make[1]: *** [depend] Error 1
  5. make[1]: Leaving directory `/Users/xietianrui/AndroidStudioProjects/ijkPlayer-compile/android/contrib/openssl-x86/crypto'
  6. make: *** [depend] Error 1
  7. parse_git_dirty:11: fork failed: resource temporarily unavailable

没查明白什么原因 =.=

再试一下 all 时间太长了 直接手动把后面两个依次执行

  1. ./compile-openssl.sh x86
  2. ./compile-openssl.sh x86_64

生成 so

  1. cd ..
  2. ./compile-ijk.sh all
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注