如何正确编译ijkplayer
PS:无论做什么事,实践最重要,亲身实践积累的经验,不是随便阅读一篇技术文章所能比拟的。
最近项目中可能需要视频播放,而且后期还可能要支持播放 rtsp 协议的视频,权衡了一下还是通过编译 B 站开源的 ijkplayer 吧,ijkplayer 是一个基于 ffmpeg 的轻量级的可在 Android 和 Ios 上使用的跨平台播放器,可以通过编译来实现更多格式的支持,可以说只要是 ffmpeg 支持的格式 ijkplayer 就支持。
刚开始使用 Cygwin 进行编译,但总是在生成 so 文件的时候出错,当然中间还有很多要踩的坑,于是决定使用 Ubuntu 环境编译 ijkplayer,在 Ubuntu 环境下编译时基本没有什么问题,编译过程如下:
准备
配置环境变量
安装必须组件
正式编译
运行ijkplayer
准备
安装 VMware 虚拟机并安装 Ubuntu 系统,安装完 VMware 之后创建虚拟机,选择典型安装模式,如下图所示:
然后点击下一步,选择已经下载的系统镜像,如下图所示:
正确选择后会显示出镜像信息,如我选用的是 Ubuntu 64 位 18.04 ,然后继续下一步,如下图所示:
填写用户名、密码等信息,点击下一步,如下图所示:
填写虚拟机名称以及虚拟机要安装的位置,点击下一步:
设置虚拟机磁盘大小,为了不降低磁盘性能选择将磁盘存储为单个文件,然后点击下一步,如下图所示:
Ubuntu 虚拟机到此创建完毕,点击完成,等待 Ubuntu 安装完成,输入设置的密码即可进入 Ubuntu 系统,如下图所示:
此外还需下载好 Linux 版本的的 Android SDK 和 NDK,这里选择的分别是 android-sdk_r24.4.1-linux.tgz 和 android-ndk-r10e-linux-x86_64.zip,下载后可以使用如下命令解压文件:
1unzip xxx.zip
2tar -xvf xxx.tgz
切记不要将 NDK 目录放在虚拟机的共享目录下,为保证编译顺利进行应将 NDK 目录放在 Ubuntu 的系统目录,也就是 /home/用户名 下面的目录。
配置环境变量
在 Ubuntu 下的 /home/用户名/ ,按 Ctrl+h 查看 .bashrc 文件并配置 SDK 和 NDK 环境变量,参考如下:
1NDK=/home/jzman/android/android-ndk-r10e
2export NDK
3ADB=/home/jzman/android/android-sdk-linux/platform-tools
4export ADB
5# ANDROID_NDK和ANDROID_SDK路径
6ANDROID_NDK=/home/jzman/android/android-ndk-r10e
7export ANDROID_NDK
8ANDROID_SDK=/home/jzman/android/android-sdk-linux
9export ANDROID_SDK
10# 加入到PATH路径
11PATH=${PATH}:${NDK}:${ADB}:${ANDROID_NDK}:${ANDROID_SDK}
配置完成后保存并关闭 .bashrc,打开 Terminal 输入 ndk-build -v 查看 ndk 是否配置成功,运行日志如下则配置成功:
1jzman :~$ ndk-build -v
2GNU Make 3.81
3Copyright (C) 2006 Free Software Foundation, Inc.
4This is free software; see the source for copying conditions.
5There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
6PARTICULAR PURPOSE.
7
8This program built for x86_64-pc-linux-gnu
安装必须组件
依次输入如下命令更新和安装 git、yasm 和 make ,
1sudo apt-get update
2sudo apt install git
3sudo apt install yasm
4sudo apt install make
使用 git --version 和 make -v 查看 git 和 make 工具是否安装成功,成功则显示对应版本号,参考如下:
1jzman :~$ git --version
2git version 2.17.1
3jzman :~$ make -v
4GNU Make 4.1
5Built for x86_64-pc-linux-gnu
6Copyright (C) 1988-2014 Free Software Foundation, Inc.
7License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
8This is free software: you are free to change and redistribute it.
9There is NO WARRANTY, to the extent permitted by law.
10jzman@ubuntu:~$
11
正式编译
1//clone ijkplayer源码
2git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
3cd ijkplayer
4git checkout -B latest k0.8.8
5//使用更轻量的module-lite.sh
6cd ijkplayer/config
7rm module.sh
8ln -s module-lite module.sh
9//下载ffmpeg源码
10cd ijkplayer
11./init-android
12//编译ffmpeg
13./compile-ffmpeg.sh clean
14./compile-ffmpeg.sh all
15//编译ijkplayer,生成so文件
16cd ijkplayer/android
17./compile-ijk.sh all
如果要支持 https,在编译时执行如下命令:
1cd ijkplayer
2./init-android-openssl.sh(支持https)
3cd ijkplayer/android/contrib
4./compile-openssl.sh clean
5./compile-openssl.sh all
编译成功之后会在 ijkplayer/android 下面生成对应的 Android 工程,如下图所示:
查看各个 abi 库中,如 ijkplayer/android/ijkplayer/ijkplayer-arm64/src/main/libs 下面是否生成对应的 so 文件,以 arm64 为例,如下图所示:
运行ijkplayer
使用 Android Studio 打开编译生成的 Android 工程,运行截图如下:
可在公众号回复关键字【加群】邀你进Android交流群。
推荐阅读: