当前位置: 首页 > ops >正文

ubuntu编译ijkplayer版本k0.8.8(ffmpeg4.0)

编译环境

  • 系统:ubuntu18.04
  • NDK: android-ndk-r10e
  • sdk:android-sdk_r24.4.1-linux

下载

sudo wget http://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip

sudo wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

下载后解压到路径/xxx/xxx

配置环境变量

sudo gedit /etc/profile
#替换成文件的路径
export PATH="/xxx/xxx/android-sdk-linux/platform-tools:$PATH"
export PATH="/xxx/xxx/android-sdk-linux/tools:$PATH"
export ANDROID_NDK="/xxx/xxx/android-ndk-r10e"
export PATH="$ANDROID_NDK:$PATH"
# 加载环境变量
source /etc/profile
//测试ndk是否生效,如果有打印相关版本信息等,即是生效
ndk-build -v//测试sdk是否生效,如果有打印相关版本信息等,即是生效
adb --version

代码拉取和配置修改

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
cd ijkplayer
git checkout -B latest k0.8.8

1、init-android.sh修改 FFmpeg 的版本(改成 4.0 版本):

IJK_FFMPEG_UPSTREAM=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_FORK=https://github.com/Bilibili/FFmpeg.git
#IJK_FFMPEG_COMMIT=ff3.4--ijk0.8.7--20180103--001
IJK_FFMPEG_COMMIT=ff4.0--ijk0.8.8--20210426--001

2、编译类型(完整版)

cd config 
rm module.sh 
ln -s module-default.sh module.sh # 完整版 

编译

1、初始化下载

# 初始化Android环境
./init-android.sh# 下载 openssl 源码
./init-android-openssl.sh

2、编译

# 在项目根目录下执行
cd android/contrib # 编译 openssl
./compile-openssl.sh clean  
./compile-openssl.sh all  # 编译 FFmpeg 
./compile-ffmpeg.sh clean 
./compile-ffmpeg.sh all  # 编译 ijkplayer
cd ..  
./compile-ijk.sh all

遇到的问题

1、Unknown option "--disable-ffserver".

 config/module.sh 文件,注释掉以下两行:

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda"

2、error: undefined reference to 'ff_ac3_parse_header'

config/module.sh 文件,增加如下一行:

# 在 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-bsfs" 下方添加:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=eac3_core"

3.error:x0000000 这个问题折腾了好久

大多数网上文章建议多是把大B改成小b,很麻烦。后来在issus找到了回复,验证可行。

解决原文 (https://github.com/bilibili/ijkplayer/issues/4093)

在module-default.sh增加:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"

http://www.xdnf.cn/news/18345.html

相关文章:

  • JVM-(7)堆内存逻辑分区
  • 智能编程中的智能体与 AI 应用:概念、架构与实践场景
  • 【Flutter】Container设置对齐方式会填满父组件剩余空间
  • BaaS(Backend as a Service)技术深度解析:云时代的后端开发革命
  • 数据结构青铜到王者第一话---数据结构基本常识(1)
  • Spring面试宝典:Spring IOC的执行流程解析
  • JavaScript 十六进制与字符串互相转(HEX)
  • 通义千问VL-Plus:当AI“看懂”屏幕,软件测试的OCR时代正式终结!
  • 微信小程序基础Day1
  • iOS 文件管理全景实战 多工具协同提升开发与调试效率
  • ACM模式输入输出
  • mlir CollapseShapeOp ExpandShapeOp的构造
  • 循环神经网络实战:用 LSTM 做中文情感分析(二)
  • Class A 包含字段 x Class B 也包含字段 x,如果判断List<A> lista 和 List<B> listb 有相同的 x?
  • 29、工业网络威胁检测与响应 (IDS 模拟) - /安全与维护组件/industrial-network-ids
  • spark数据缓存机制
  • 云计算下数据隐私保护系统的设计与实现(LW+源码+讲解+部署)
  • [RestGPT] docs | RestBench评估 | 配置与环境
  • 阿里云的centos8 服务器安装MySQL 8.0
  • 【OpenGL】LearnOpenGL学习笔记13 - 深度测试、模板测试
  • Linux CentOS 安装 .net core 3.1
  • 1. 准备工作---数据分析编程 - 从入门到精通
  • 密码学——对称加密, 非对称加密和CA
  • 基于SpringBoot的流浪动物领养管理系统【2026最新】
  • 常见的端口扫描
  • 常德二院全栈国产化信创项目:开启医疗新质生产力的“头雁”之旅
  • Android 定位技术全解析:从基础实现到精准优化
  • 数据大屏全链路质量保障测试
  • 消息中间件(RocketMQ+RabbitMQ+Kafka)
  • C++手撕LRU