在Ubuntu下编译IjkPlayer-android

前端时间项目中用到了视频播放的功能,没办法又不想使用系统自带的播放器,没有为什么就是不想用,我也希望谷歌爸爸能出一款最基础的播放器控件,然后可以灵活的自己定制UI,唉!经过一番寻找终于找到了IjkPlayer,这是Bilibili的一款基于ffmpeg视频编解码库的播放器控件,看起来挺不错的。此外还发现了一篇二次封装的UI效果 基于ijkplayer的视频播放器,仿Bilibili客户端,集成沉浸式全屏、弹幕、触屏控制、视频源切换等功能 封装的不错。于是采用这个来做自己的播放器控件了。但实践的过程中还是有不少坑要踩的,比如视频的解码格式的支持,安卓各CPU平台的兼容,以及https的支持这些都是我遇到的问题,网上的很多库都是对这些支持都是不全的,怎么办呢?还是自己动手丰衣足食,重新去编译一遍Ijkplayer的源码。找到 ijpliayer github 地址看到它的Readme中有编译过程的描述,嗯!大致就酱紫, 不过还是有些需要注意的。下面带大家一起一步一步的重新编译。

  • 准备工作

这里我使用在ubuntu下去编译它,没有为什么就是方便。
1.下载virtualbox虚拟机官网地址
2.下载unbutu17.04镜像文件
3.下载winSCP百度搜一下就有,用来方便在win和unbutu之间传输文件用

  • 开始安装工作

当系统安装完成以后,我们进入桌面,开始编译ijkplayer。

1.首先先去下载androidNDK 以及SDK

android NDK选择Linux的
android SDK选择一个高一点的Linux版本就好。
下载完成之后打开终端
Ctrl+Alt+T
我们在home\Downloads目录下会看到我们下载的ndk和sdk压缩包我们把它们解压出来,一个是.zip的另一个是.tgz的。
cd ~/Downloads
unzip xxx.zip
tar zxvf xxx.taz
将两个压缩文件解压到当前目录即可。

2.下载openjdk

sudo apt-get install openjdk-8-jre-headless
之后会自动安装好。

3.配置SDK和NDK环境变量

新下载好的linux版本的sdk缺少一点东西,需要我们自己去下,好在官方readme中已经说明了打开和windows中的sdkmanager一样的东西,在Linux中不叫这个名字,叫做android.sh 在tools目录下。说明如下
To start the SDK Manager,please execute the program "android".
启动android sdk manager
sh ~/Downloads/android-sdk-linux/tools/android
之后就是和windows一样了。
我们下载最新的Android SDK Tools和Android SDK Platform-tools以及Android SDK Build-tools,在下载一个最新的Android SDK Platform即可。
配置环境变量
sudo gedit /etc/profile
/etc/profile 的文件是让所有用户都可用。
在配置文件末尾加入如下部分并保存:

export PATH=~/Downloads/android-sdk-linux/platform-tools:$PATH
export PATH=~/Downloads/android-sdk-linux/tools:$PATH
export ANDROID_NDK=~/Downloads/android-ndk-r14b
export PATH=~/Downloads/android-ndk-r14b:$PATH

让环境变量立即生效
source /etc/profile
你可以用简单的命令来测试一下是否生效了如
adb -version

3.安装一些软件

sudo apt-get update
sudo apt-get install git
sudo apt-get install yasm

4.下载ijkplayer-android

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android

  • 5.开始编译

cd ijkplayer-android
先做初始化
./init-android.sh
初始化从网上提取ffmpeg库,有段时间,可以先去泡杯茶。
如果视频播放需要支持Https协议的还需要执行一遍如下初始化脚本。
./init-android-openssl.sh

1.编译各个平台的openssl

cd android/contrib
./compile-openssl.sh clean
之后最好一个一个的对应CPU平台去编译openssl,也能一次全部编译,但是我之前出过问题,后来单独编译就好了。可以更具自己的需求分别选择执行下面步骤,过程也是挺漫长的。

./compile-openssl.sh armv7a
./compile-openssl.sh armv5a
./compile-openssl.sh arm64
./compile-openssl.sh x86
./compile-openssl.sh x86_64
2.编译各个平台的ffmpeg

根据官方的说法,如果我们需要更多的编解码格式,得先执行下面的命令


ijkplayer

回到ijkplayer-android目录并链接module文件

cd ../..
cd config/
rm module.sh
ln -s module-default.sh module.sh
cd ..
cd android/contrib/
./compile-ffmpeg.sh clean

其实打开module.sh里面是各个编解码的格式,可以在里面开启或禁用
如果需要启用/停用某个解码器或功能只需要修改 enable/disable即可。
之后最好一个一个的对应CPU平台去编译ffmpeg,也能一次全部编译,但是我之前出过问题,后来单独编译就好了。可以更具自己的需求分别选择执行下面步骤,过程也是挺漫长的。

./compile-ffmpeg.sh armv7a
./compile-ffmpeg.sh armv5a
./compile-ffmpeg.sh arm64
./compile-ffmpeg.sh x86
./compile-ffmpeg.sh x86_64
3.编译ijkplayer native代码

做法也是一个一个平台去编译它。不要图省事一起编译。

cd ..
./compile-ijkplayer.sh armv7a
./compile-ijkplayer.sh armv5a
./compile-ijkplayer.sh arm64
./compile-ijkplayer.sh x86
./compile-ijkplayer.sh x86_64

编译好后就能在android/ijkplayer目录中对于的文件夹里找到了这里截取一段x86文件夹的图

ijkplayer-x86

新版的编译后新增了一个libijksound.so文件,之前是没有的,通常libijkffmpeg.so 有我图中这么大就差不多了,不同的平台大小都不一样。其他两个文件相对来是就几百k。
到这里一切都ok了。我们可以使用winSCP工具把编译好的ijkplayer传送到win上然后使用。

欢迎共同探讨更多安卓,java,c/c++相关技术QQ群:392154157
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容