ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

记一次ijkplayer编译旅程

2020-06-09 14:43:58  阅读:344  来源: 互联网

标签:ijkplayer 旅程 module compile 编译 Step sh android


编前记

随着自媒体和音视频行业的兴起,以及产品对移动端跨平台业务的需求,伴随而来的是对开发人员工作量的增加已及工作难度的增大,比如音视频的播放需要支持市面上涵盖95%的音视频格式,那么Android原生播放器是无法满足的,这个时候我们就可以考虑ijkplayer了。
先给大家介绍一下什么是ijkplayer,ijkplayer是bilibili(哔哩哔哩)自研的一款开源的基于FFMPEG轻量级Android/Ios音视频播放器,具有易于集成的api和编译配置可裁剪的特性,以及高度的可定制开发的特性而深受广大开发者的喜爱,所以被广大开发者和使用者亲切的称为 “ B ” 站。

如何使用ijkplayer

ijkplayer 官方地址:https://github.com/bilibili/ijkplayer

  • Android
  • Gradle
# required
allprojects {
    repositories {
        jcenter()
    }
}

dependencies {
    # required, enough for most devices.
    compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'

    # Other ABIs: optional
    compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'
    compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'

    # ExoPlayer as IMediaPlayer: optional, experimental
    compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
}

至此一个大众化的ijkplayer库已经添加好了,没有什么特殊要求的话直接用就好啦!然后使用方法和MediaPlayer大同小异,这里就不讲述怎么使用了,Google一下就很多。

ijkplayer编译so库

首先说下我的编译环境是: Ubuntu-16.04.6-server-amd64

  • Step 1:下载,配置SDK与NDK
    sdk官网下载:http://tools.android-studio.org/index.php/sdk
    建议使用:Android-sdk_r24.4.1-linux
    ndk官网下载:https://developer.android.google.cn/ndk/downloads/older_releases
    建议使用NDK的版本:NDK r10e

接着是配置环境变量:

1. $ sudo vim /etc/profile,在文件末尾加入如下内容:
2. export ANDROID_SDK=/home/yh/android-sdk-linux
3. export PATH=$ANDROID_SDK/tools:$PATH
4. export ANDROID_NDK=/home/yh/ndk/android-ndk-r10e/
5. export PATH=$ANDROID_NDK:$PATH
6. 保存并退出
7. $ source .bashrc // 使得配置的环境变量生效

验证配置是否生效:ndk-build -v
在这里插入图片描述
控制台打印如上日志,至此 android NDK 安装配置完毕。

  • Step 2:安装git、make与yasm

sudo apt-get install git
sudo apt-get install make
sudo apt-get install yasm

  • Step 3:拉取ijkplayer源码
1. git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android // 拉取ijkplayer源码
2. cd ijkplayer-android // 进入源码目录
3. git checkout -B latest k0.8.8 // 新建一个分支

  • Step 4:初始化android
./init-android.sh // 初始化Android脚本
  • Step 5:编译脚本配置
1.如果您喜欢更多编解码器/格式
cd config // 进入config目录
rm module.sh // 删除module.sh脚本
ln -s module-default.sh module.sh // 指定默认脚本软连接到module.sh
source module.sh // 重新执行刚修改的文件初始化,使之立即生效

2.如果您希望使用较小的编解码器/格式来获得较小的二进制大小(包括hevc函数)
cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
source module.sh

3.如果您希望使用较小的编解码器/格式来获得较小的二进制大小(默认情况下)
cd config
rm module.sh
ln -s module-lite.sh module.sh
source module.sh

这里我们就选择第1个,不要问我为什么,小朋友都知道越多越好
然后修改 module-default.sh,在文件末尾追加如下两行
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bzlib"
  • Step 6:初始化android支持访问Https
1. cd .. // 返回上一级目录
2. ./init-android-openssl.sh // 执行初始化支持https脚本
  • Step 7:clear一下
1. cd android/contrib // 进入contrib目录
2. ./compile-openssl.sh clean
3. ./compile-ffmpeg.sh clean
  • Step 8:编译openssl
1. ./compile-openssl.sh all //大概5分钟左右吧(看服务器的配置)
  • Step 9:编译ffmpeg
./compile-ffmpeg.sh all

说明一下:如果想编译所有版本的so库,就跟all,如果只想编译特定
CPU架构就直接跟cpu架构名称,例如:./compile-ffmpeg.sh armv7a 就好啦!

  • Step 10:编译ijkplayer
cd .. 
./compile-ijk.sh armv7a
稍作等待ing...编译成功后,当前目录下的ijkplayer的里面的库和文件就更新了。导出ijkplayer项目作为library依赖就可以了。

在这里插入图片描述
最后说一下该如何使用编译好的库文件了:

  • 在自己的项目里面导入对应的库文件,根据文件夹的后缀名称就能分辨出来啦!不出意料的话会出现报错信息,基本都是gradle配置的问题,根据报错信息修改错误位置就好了。
  • 修改好以上配置错误信息后我们就可以将以上library打包成aar了,这样以后就可以直接使用aar作为项目的依赖包了,是不是很方便呢。
    在这里插入图片描述
  • 根据example里面的内容就可以定制出属于你自己的ijkplayer了!
最后感谢大家的阅读,你的关注和转发是我无限的动力…

标签:ijkplayer,旅程,module,compile,编译,Step,sh,android
来源: https://blog.csdn.net/qq_32680169/article/details/106572193

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有