13_android编译ijkplayer

article/2025/8/24 18:42:52

13_android编译ijkplayer

一.编译环境

  • macOS Big Sur 11.4
  • NDK r10e
  • HomeBrew
  • git

二.编译前准备

  • 配置ANDROID_SDK和ANDROID_NDK环境变量

在这里插入图片描述

  • 安装git,make, yasm
brew install git
brew install make
brew install yasm

三.使用git获取ijkplayer最新源码

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

四.项目结构

|ijkplayer-android
|----android //Ijkplayer Android 项⽬源码
|----config //ffmpeg的配置脚本
|----|----module.sh //ffmpeg 当前配置脚本,可⽤以下三个模板替换当前脚本
|----|----module-default.sh //默认配置
|----|----module-lite.sh //最⼩化配置
|----|----module-lite-hevc.sh //基于最⼩化配置添加hevc功能配置
|----doc //介绍说明
|----extra //三⽅依赖库保存的⽂件夹
|----|----init-extra.sh // 引⽤本地存在的库
|----ijkmedia //IjkPlayer Native部分源码
|----ijkprof
|----ios //IjkPlayer IOS 部分源码
|----tools //git操作项⽬的⼯具脚本
|----|----pull-repo-base.sh
|----|----pull-repo-ref.sh
|----|----setup-as-commiter.sh
|----|----sync-mirrors.sh
|----init-android.sh //Android初始化脚本
|----init-android-exo.sh //被compile-ijk.sh调⽤
|----init-android-j4a.sh //被compile-ijk.sh调⽤
|----init-android-libsoxr.sh //被compile-ijk.sh调⽤
|----init-android-libyuv.sh //被init脚本调⽤
|----init-android-openssl.sh //添加openssl需要在编译ffmpeg之前执⾏openssl的init和compile
|----init-android-prof.sh //被compile-ijk.sh调⽤
|----init-android-soundtouch.sh //被compile-ijk.sh调⽤
|----init-config.sh //被init脚本调⽤
|----init-ios.sh //ios初始化脚本
|----init-ios-openssl.sh //添加openssl需要在编译ffmpeg之前执⾏openssl的init和compile
|----version.sh //查看版本的脚本

五.编译模式配置

  • module-default.sh:全量编译,支持的较多的编解码格式,生成的.so动态库文件较大
  • module-lite.sh:支持的较少的编解码格式,生成的.so动态库文件较小
  • module-lite-hevc.sh:支持的较少的编解码格式,添加hevc功能配置,生成的.so动态库文件较小

我们选择module-default.sh进行编译

cd config
rm module.sh
ln -s module-default.sh module.sh

注意:选用module-default.sh进行编译时,需要在module-default.sh文件中添加如下配置,否则编译过程中报错

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

六.编译openssl

为什么要编译openssl?因为要让我们的播放器能够播放https的视频啊😄,所以我们需要手动编译openssl,以支持https,并且需要在编译ffmpeg之前执⾏,回到ijkplayer-android根目录,执行初始化init-android-openssl脚本文件,初始化openssl,此处顺利与否会和你的网络有直接关系,建议使用翻墙工具😄

./init-android-openssl.sh

开始编译

cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all

在这里插入图片描述

可以看到当我们编译openssl成功后,系统已经给出明确的提示,可以开始编译ffmpeg了,ffmpeg编译完成后,就可以编译ijkplayer相关源码了

七.编译ffmpeg

回到ijkplayer-android根目录,执行初始化init-android.sh脚本文件,初始化ffmpeg,此处顺利与否会和你的网络有直接关系,建议使用翻墙工具😄

./init-android.sh

开始编译ffmpeg

./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

八.编译Ijkplayer

cd ../
./compile-ijk.sh clean
./compile-ijk.sh all

编译成功后会可以看到ijkplayer-android/android/ijkplayer的android项目,可以直接通过android-studio打开该项目,修改配置文件运行,也可以从中把生成的.so文件导入到自己的项目去使用

在这里插入图片描述


http://chatgpt.dhexx.cn/article/WlbrFdvo.shtml

相关文章

ijkplayer项目

ijkplayer项目 环境配置 NDK全称:Native Development Kit。 1、NDK是一系列工具的集合。NDK提供了一系列的工具,帮助开发者快速开发C(或C)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨…

ijkplayer android 内存,IjkPlayer

ijkplayer是b站开源的超级好用的视频播放器,小编这里为大家送上。相信大家都早有耳闻。ijkplayer Android和ios都可用,还支持多种视频的硬解码。人生苦短,不如快点试一试。需要的朋友快来西西下载吧! 应用简介 ijkplayer是Bilibil…

android集成 ijkplayer Ijkplayer集成使用方案 + demo

首先想使用ijkplayer的话,肯定得先编译啦,但是我之前已经编译好了,时间是2018年3月份左右,版本也是当时最新的0.8.8,所以大可放心使用 其实拉到项目中还是很简单的。也就是把要适配的.so库拉到项目中,再把需…

ijkplayer 源码分析(上)

本文基于0.8.8版本的 ijkplayer ,对其源码进行剖析,涉及到不同平台下的封装接口或处理方式时,均以 Android 为例。 ijkplayer 是一款比较出众的开源 Android/IOS 跨平台播放器,基于 ffplay,API 易于集成,可…

ijkplayer播放器剖析(五)视频同步与渲染机制分析

ijkplayer播放器剖析系列文章: kplayer播放器剖析(一)从应用层分析至Jni层的流程分析 ijkplayer播放器剖析(二)消息机制分析 ijkplayer播放器剖析(三)音频解码与音频输出机制分析 ijkplay…

ijkplayer播放器详解使用教程

1.认识ijkplayer 最近公司准备开发一款视频播放及直播的应用,找了许多开源的框架,大部分都是基于ffmpeg开发的。最开始准备用Vitamio框架开发的,相关的文章也比较丰富,结果对于非个人移动应用均需购买Vitamio使用授权。不过B站开…

ijkplayer播放器架构从原型到升级

ijkplayer是一款跨平台的播放器,支持Android与iOS端,核心部分基于ffmpeg,支持Android的mediacodec硬解与iOS的videotoolbox硬解,视频图像采用OpenGL进行渲染。许多主流播放器都使用ijkplayer作为播放方案。接下来我们从核心播放流…

游戏手柄改typec接口

前言 几年前买的杂牌游戏手柄坏了好久,连接十分不稳定,稍微动一下线就会断连,我推断是线的质量不好,理论上将把线换掉应该就好了。一不做二不休,我想直接改成typec接口,手柄与数据线分离,这样就…

nl80211_iftype接口类型详解

NL80211_IFTYPE_UNSPECIFIED 上层协议未指定硬件接口类型,由驱动指定 NL80211_IFTYPE_ADHOC independent BSS member,各个无线主机之间对等交换数据 NL80211_IFTYPE_STATION managed BSS member NL80211_IFTYPE_AP 接入点,通常一端通过有…

android接口和type c对比,USB Type-C究竟比3.5mm音频接口好在哪里?

随着苹果宣布将在iPhone7/7 Plus上取消传统的3.5mm音频接口,不少动作快的手机厂商已经即使跟进了,目前乐视所有新机和摩托罗拉Moto Z均使用USB Type-C接口代替3.5mm音频接口,这样做究竟有什么好处呢? 基础知识 首先我们需要知道,3.5mm接口所传输的是立体声模拟音频,这也就…

TYPE-C接口的定义诠释以及功能参数挖掘

现在的安卓手机大多都采用了Type-C接口,如华为、荣耀、小米、三星、魅族等。对于这个接口,大家不再陌生,但大多数人对它的认识还停留在 “支持正反插”、“用来充电” 的基础层面。今天就来深入挖掘一下TYPE-C发展七年至今,为何能…

Type-C接口原理图,附引脚说明

维基链接:https://zh.wikipedia.org/wiki/USB_Type-C 针名描述针名描述A1GND接地B12GND接地A2SSTXp1SuperSpeed差分信号#1,TX,正B11SSRXp1SuperSpeed差分信号#1,RX,正A3SSTXn1SuperSpeed差分信号#1,TX&…

typec接口知识

typec接口定义(24脚) typec母头 typec公头(一对D,D-,只有一个CC脚,另一个CC脚变成了VCONN) D/D-:当USB3接口不可用的时候,这些引脚为USB2信号提供信号通道。 Vbus/GND:这些引脚能够为上行数据接口提供100W的供电能力,…

深入学习USB(6)USB Type-C接口定义概念解析

文章目录 **一、Usb type c接口定义介绍****二、USB3.1 type-c接口特性****三、USB Type-C接口的优点****四、usb type-c接引脚定义****五、usb type-c接口主要功能****六、usb type-c接口工作流程**七、市场上Type-C/PD有哪几种分类呢? 一、Usb type c接口定义介绍…

lightning接口_苹果Lightning接口与Type-C接口,谁更胜一筹?

曾几何时,在苹果的强势助攻下,Lightning接口在数码界曾一度混得风生水起!然而,近年来随着智能手机的发展,手机接口快速升级,其中Type-C接口凭借更快的数据传输、充电速度等优势,越来越多的出现在大家的视线中,隐隐盖过Lightning接口的风头,就连特立独行的苹果也对其青…

Type-C接口技术(一)

前言 电子产品接口的迅速发展是电子技术迅速发展的一个缩影,随着现在电子产品对数据传输和充电功率要求越来越高的情况下,一些以前常用接口开始慢慢被淘汰,而支持更高速率和充电功率的的Type-C接口慢慢开始大放异彩,此外支持盲插…

浅谈一下Type-C接口发展历程

1996年,由英特尔、微软、ibm等多家公司联合设计的usb标准问世,键盘、鼠标、智能手机以及打印机等等大多使用usb标准来实现供电和数据传输。 usb接口从诞生之初就是为了实现通用这个目的。在usb诞生之前,键盘、鼠标多使用ps二接口,…

TYPE-C接口电路设计篇(一)

常见USB接口类型 随着USB Type-C接口的推行,USB Type-C是一种通用串行总线(USB)的硬件接口形式,USB Type-C接口在消费类产品普及程度越来越高,常见的适配器、笔电、手机等产品都兼容USB Type-C设计,接口多…

Type-C接口

TYPE-C接口 USB Type-C接口的命名原语USB Type-C连接器,这是一种坚固的易于使用的接口。支持正反插,方便快捷。支持超高速率通信功能和功率输出。最大传输速率10Gbits/S,最大输出功率100W,最大电流5A。大小8.3mm X 2.5mm。 具有…

一文带你搞清楚USB、type-C、雷电三接口之间的区别与联系

缘起 最近某些新电脑的发布,看到带了全功能的type-c接口,一直搞不懂什么type-c还有什么全功能,半功能?和雷电3又有什么区别,雷电3又有什么全速,半速。由于搞不清,所以网上看了很多资料,这里总结一下以备后续查阅 说说USB 你肯定会说,这个我知道,就是下面这种的 没…