Ubuntu系统下编译ijkplayer,并生成so库

自己用了ijkplayer,且用的so库都是其他大神的成品,自己从未涉足太深,今天就记录一下自己的实践过程。
Ubuntu系统的JDK、SDK、NDK环境配置这里不做太多阐述,只针对编译ijkplayer的编译和生成so库文件做详细记录。

  • 安装必要的操作环境git与yasm
sudo apt-get install git
sudo apt-get install yasm
  • 拉取ijkplayer源码(当前版本是0.8.8 可以随着版本迭代改变自己的输入)
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
  • 编译脚本配置

这个配置文件是ijkplayer文件夹下:config/module.sh,可以打开看看这个文件:
比如这里是配置处理、支持什么类型的数据,enable启用,disable禁用,根据自己需要可以手动改一下。


config文件夹下还包括三个文件:
module-default.sh:默认,如果你喜欢更多类型可以用这个;
module-lite-hevc.sh:如果您更喜欢较小的二进制大小的编解码器/格式(包括hevc功能)
module-lite.sh:如果您更喜欢较小的二进制大小的编解码器/格式(默认情况下)

       • 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
  • 初始化android支持Https
cd ..
./init-android-openssl.sh

如果我们在过程中遇到了“error: cannot open .git/FETCH_HEAD: Permission denied
”的错误提示,我们可以尝试在ijkplayer文件夹下运行脚本sudo chown -R xiaochuan:xiaochuan .git将文件夹的操作权限改为自己的用户下,我的用户名是:xiaochuan


或者在执行脚本./init-android-openssl.sh时候前面加上sudo强制执行

cd ..
sudo ./init-android-openssl.sh
  • 清除和编译ffmpeg
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

过程中如果遇到“ANDROID_NDK=You must define ANDROID_NDK before starting. They must point to your NDK directories.”错误提示,别慌,是你的NDK配置的有问题。检查一下NDK是否配置成功,执行命令:sudo gedit ~/.bashrc打开配置文件看看,是不是我们写的名称或者下载的NDK包不正确,一定要使用“ANDROID_NDK”这个名称作为NDK路径名称,NDK最小版本支持 10e,最好是 14e。
如果想编译所有版本的so库,就跟all,如果是特定CPU架构就跟cpu架构,比如:./compile-ffmpeg.sh armv7a编译特定需要的肯定是比全部耗时短~

  • 编译ijkplayer,加all默认编译所有架构的so库,不加默认只编译armv7a架构!
cd ..
./compile-ijk.sh all

至此,我们自己的ijkplayer的so库就生成了,可以通过android/ijkplayer/ijkplayer-armv7a/src/main/libs 找到。

参考:

Ijkplayer编译成Android的so库的详细步骤
linux 环境编译 ijkplayer so 库实践
ijkplayer编译so库真没那么难
Bilibili/ijkplayer 编译解析
解决ubuntu中使用git碰到的问题:error: cannot open .git/FETCH_HEAD: Permission denied

你可能感兴趣的:(Ubuntu系统下编译ijkplayer,并生成so库)