理解ijkplayer(一):开始

前言

我是一名打算走音视频路线的android开发者。以此系列文章开始,记录我的音视频开发学习之路。

Ijkplayer源码:

https://github.com/bilibili/ijkplayer

学习ijkplayer需要掌握的技能:

  1. 简单的c语言基础
  2. android开发基础和java jni基础
  3. linux或mac开发环境(windows环境下的cygwin连第一个ijkplayer的脚本都无法执行。)

1. 开始

按照ijkplayer的readme,将ijkplayer完整的编译并构建so库,理论上是没有问题的。但是我实际执行上还是遇到了一些问题,记录如下:

  1. sdk和ndk的环境变量配置:

    可参考mac开发环境配置中的第5点

  2. 克隆ffmpeg太慢

    在执行第一个脚本./init-android.sh的时候,会去克隆bilibili团队改造的 ffmpeg项目,但是因为某种已知的原因,克隆非常缓慢,解决方式是:将bilibili的ffmpeg项目导入到国内的git仓库,例如码云,然后修改脚本上的url地址指向码云的仓库,就能克隆下来了。

    例如:

    理解ijkplayer(一):开始_第1张图片

    如何将github仓库导入到码云上网一搜就知道了。

  3. 此时可以按照官网的教程执行./init-android.sh。执行完后,ffmpeg就拉下来了。

2. 编译各个架构的so库

cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

cd ..
./compile-ijk.sh all

按照上述的命令是编译所有架构的ffmpeg库并以之编译Ijkplayer的所有的so库。

那么如果要编译特定的架构,例如只要armv7a和arm64架构,则:

./compile-ffmpeg.sh h
Usage:
  compile-ffmpeg.sh armv5|armv7a|arm64|x86|x86_64
  compile-ffmpeg.sh all|all32
  compile-ffmpeg.sh all64
  compile-ffmpeg.sh clean
  compile-ffmpeg.sh check

(什么输入h会出现帮助信息?答案在compile-ffmpeg.sh脚本里面)

那么依次输入./compile-ffmpeg.sh armv7a编译..,等完成后再输入./compile-ffmpeg.sh armv64编译..。

后面再用相同的方式运行./compile-ijk.sh脚本即可。

3. 开始阅读源码

工具:

  1. Visual studio code
  2. 删掉编译ffmpeg带来的build/目录下对应架构的源码,否则在全局查找某个函数的时候,会显示多个搜索结果,看代码的时候就不方便了。

你可能感兴趣的:(理解ijkplayer(一):开始)