基于win10子系统ijkplayer全量编译(支持所有格式)流程

1 环境搭建

1.1 编译环境说明

ijkplayer目前支持linux,mac平台编译。windows平台暂不支持。如果没有linux环境,可以使用win10自带的子系统ubuntu进行编译。win10子系统开启方法参见:https://www.jianshu.com/p/58090215bda8也可自行度娘。

    本文档主要以win10子系统ubuntu为编译环境进行说明。其它平台都比win10子系统简单,这里就不做具体说明。

1.2 ijkplayer版本说明

ijkplayer默认版本支持的音视频格式和网络协议有限,基本上不满足产品需要(默认支持:mp4、flv、f4v、mkv等)。对于wav、m3u8、https协议等都不支持。需要自己编译ijkplayer源码。编译后的库的大小会有所增加。请根据自己的需要选择编译。全量支持的库大小大概有30M左右。

1.3 环境准备

NDK:android-ndk-r14b-linux-x86_64(ijkplayer仅支持r10e以上r14b及以下的NDK版本),尽量不要使用最新版本的NDK。本人使用r14b验证通过,其它版本没有验证。

SDK:https://developer.android.google.cn/请自行下载android sdk

2 编译步骤

2.1 安装组件

$ sudo apt-get install vim openssh-server git curl wget tar unzip build-essential openjdk-8-jdk yasm python

说明:如果安装失败,请先升级ubuntu:sudo apt-get update

2.2 配置环境变量

2.2.1 NDK环境变量配置

$ sudo unzip android-ndk_r14b-linux-x86_64.zip  //在win10子系统中,先进入到windows环境中的ndk下载目录。cd /mnt/e/XXX    e代表windows盘符

$ sudo mv android-ndk-r13b /opt/Android/    //如果没有Android目录,可以手动创建mkdir Android

添加NDK到环境变量中

$ sudo vim /etc/profile

在文件末尾添加如下内容,并保存退出

export ANDROID_NDK=/opt/Android/android-ndk-r14b

export PATH=$PATH:$ANDROID_NDK

2.2.2 SDK环境变量配置

android SDK的环境变量配置与NDK配置一样,参见2.2.1  

完成后重启Ubuntu或者在终端中source一下profile,建议重启ubuntu,以免source不生效,后面编译报错。

2.3 代码克隆

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

cd ijkplayer-android

git checkout -B local_k0.8.8 k0.8.8 //切换分支,取k0.8.8分支。local_k0.8.8是本地分支,可以自己命名。切记一定要切换到k0.8.8分支,master或其他分支后续的编译会报错

2.4 ijkplayer编译步骤

2.4.1 编译配置

ijkplayer有三种编译配置

1)支持较多格式(完全编译,几乎所有格式都支持了),文件较大。本人使用的此种方式。最终的大小估计有30M左右。

$ cd config

$ rm module.sh

$ ln -s module-default.sh module.sh

2)支持较少格式,包含hevc

$ cd config

$ rm module.sh

$ ln -s module-lite-hevc.sh module.sh

3)支持较少格式(默认)

$ cd config

$ rm module.sh

$ ln -s module-lite.sh module.sh

2.4.2 ffmpege和openssl编译

下载源码:

开源项目中并没有直接包含ffmpeg和openssl源码,所以编译前需要先下载

// 进入工程根目录

$ cd ijkplayer-android

// checkout ffmpeg 源码,ffmpeg有300多M,下载可能会有点慢

$ ./init-android.sh

// checkout openssl android源码

$ ./init-android-openssl.sh

编译

// 编译openssl(用于支持https)

$ cd android/contrib

$ ./compile-openssl.sh clean

$ ./compile-openssl.sh all

// 编译 ffmpeg

$ ./compile-ffmpeg.sh clean

$ ./compile-ffmpeg.sh all

如果在编译ffmpeg时有报:fatal error: linux/perf_event.h: No such file or directory错误,那么在ijkplayer-android/config/module.sh的末尾添加如下配置,再重新编译即可

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bzlib"

2.4.3 ijkplayer编译

// 编译ijkplayer

$ cd ..

$ ./compile-ijk.sh all

编译完成后的包在:ijkplayer-android/android/ijkplayer目录下。

2.5 集成

集成:

    ijkplayer-android/android/ijkplayer目录是一个 Android Studio 工程,经过编译后即是一个完整的工程,可以直接拷贝出来用Android Studio打开使用。

    ijkplayer-example:示例

    ijkplayer-java:java层的库(必须的)

    ijkplayer-xxx:各种架构的so库

    ijkplayer-exo:对ExoPlayer的封装

   也可以将lib工程中的so拷贝到新建的工程中,只需要依赖对应版本的java层的库即可,这里是k0.8.8

implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'    //也可以将ijkplayer-java源码直接拷贝到工程中。


ijkplayer全量包下载地址:https://github.com/whtnlily/MyIjkplayer.git

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

推荐阅读更多精彩内容