记一次ijkplayer的编译过程

简介:

从视频直播到播放器,现在很多的产品都集成了视频播放的功能,而目前市面上有比较主流的有第三方框架有:

不过本文并不是对这三个播放器进行介绍,而是简单的介绍如何在ubuntu和mac环境下编译ijkplayer。 ijkplayer框架的源码地址:
https://github.com/Bilibili/ijkplayer

Mac上编译ijkplayer

安装软件

在Mac上编译ijkplayer之前,需要先安装一些基本的软件,这些软件在其他的开发中也会用到,需要安装的软件有homebrew、git、yasm。

1,安装homebrew

打开Terminal,输入如下的命令:

  ruby -e "$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"

2,安装git和 yasm

安装好homebrew后,再安装git和 yasm,安装的命令如下:

brew install git
brew install yasm

下载NDK并进行环境配置

NDK下载的官方地址为:
https://developer.android.google.cn/ndk/downloads/index.html
当然也可以到下面的地址下载(可以直接使用迅雷等P2P软件下载,建议下载r15版本):
https://blog.csdn.net/gyh198/article/details/75036686

然后,打开Terminal输入并输入如下的命令来打开环境变量,然后添加NDK的相关环境。

open -e .bash_profile

当然,也可以直接使用文本编辑器打开.bash_profile文件。
这里写图片描述
然后添加如下内容:

export PATH=$PATH:你的ndk路径
export ANDROID_NDK=你的ndk路径

这里写图片描述
然后 command+s 保存 ,最后检测是否配置ndk路径成功,在Terminal输入如下命令进行检测。

ndk-build

这里写图片描述

注意:当然,也可以使用Android-sdk里面的NDK,不过Android-sdk是最新版本,该文件所在结构如下:
这里写图片描述
配置完后,我们可以使用如下命令来检测NDK环境是否配置正确。

ndk-build -v

这里写图片描述

下载ijkplayer和编译ijkplayer

将ijkplayer框架源码clone到本地并编译,依次在终端输入如下命令。

git clonehttps://github.com/Bilibili/ijkplayer.git ijkplayer-android

cd ijkplayer-android

然后执行初始化,此时会从网上自动拉代码,主要是ijkplayer的一些基层类库,时间比较长。命令如下:

./init-android.sh

如果视频播放需要支持Https协议,还需要执行如下命令。

./init-android-openssl.sh

注意:若出现如下错误,说明是NDk的环境配置有问题。

Youmust define ANDROID_NDK, ANDROID_SDK before starting.They must point to yourNDK and SDK directories.

然后,编译各个平台的openssl。

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

编译各个平台的ffmpeg,如果需要更多的编解码格式,需要先执行下面的命令。

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

说明:如果使用最新版本上如果执行的是(ln -s module-lite.sh module.sh),会出现如下错误:
这里写图片描述

然后,编译各个cpu架构的ffmpeg。命令如下:

 ./compile-ffmpeg.sh all

然后使用如下的命令编译ijkplayer即可。

cd ..
./compile-ijk.sh all

如果出现如下图所示的错误,请更换ndk的版本。
这里写图片描述

如果正确编译的话,会分别在ijkplayer-arm64、ijkplayer-armv5、ijkplayer-armv7a、ijkplayer-x86、ijkplayer-x86_64这些项目的src/main/libs/对应的名称 目录下分别生成libijkffmpeg.so、libijkplayer.so、libijksdl.so这三个so文件。

在ubuntu等Linux环境上编译ijkplayer,可以访问下面的地址:
https://blog.csdn.net/g241893312/article/details/79464162

目录
相关文章
|
存储 移动开发 Linux
Linux系统之部署h5ai目录列表程序
【5月更文挑战第3天】Linux系统之部署h5ai目录列表程序
451 2
|
算法 自动驾驶 数据挖掘
3D检测:DETR3D
3D检测:DETR3D
805 0
3D检测:DETR3D
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
507 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
5月前
|
传感器 机器学习/深度学习 监控
【图像融合】差异的高斯:一种简单有效的通用图像融合方法[用于融合红外和可见光图像、多焦点图像、多模态医学图像和多曝光图像](Matlab代码实现)
【图像融合】差异的高斯:一种简单有效的通用图像融合方法[用于融合红外和可见光图像、多焦点图像、多模态医学图像和多曝光图像](Matlab代码实现)
208 0
|
机器学习/深度学习 自然语言处理 并行计算
深度学习之图像描述生成
基于深度学习的图像描述生成(Image Captioning)是一种将计算机视觉与自然语言处理结合的任务,其目标是通过自动生成自然语言来描述输入的图像。该技术能够理解图像中的视觉内容,并生成相应的文本描述,广泛应用于视觉问答、辅助盲人、自动视频字幕生成等领域。
635 7
|
机器学习/深度学习 算法 PyTorch
PyTorch Lightning:简化研究到生产的工作流程
【8月更文第29天】深度学习项目往往面临着从研究阶段到生产部署的挑战。研究人员和工程师需要处理大量的工程问题,比如数据加载、模型训练、性能优化等。PyTorch Lightning 是一个轻量级的封装库,旨在通过减少样板代码的数量来简化 PyTorch 的使用,从而让开发者更专注于算法本身而不是工程细节。
477 1
|
设计模式 算法 Java
Java中的设计模式:实战案例分享
Java中的设计模式:实战案例分享
|
Java 关系型数据库 MySQL
基于Java的二手手机回收平台系统
基于Java的二手手机回收平台系统
|
移动开发 JavaScript 前端开发
uni-app和Vue.js二者之间有什么区别?
1. uni-app是一个使用Vue.js开发所有前端应用的框架,支持一次编译多端运行。开发者编写的基础代码只需进行一次编写,就可以发布到多个平台,包括App、H5、微信小程序等。 2. Vue.js是一个渐进式JavaScript框架,用于构建用户界面。与其他大型框架不同的是,Vue被设计为可以自底向上逐层应用。
374 0
|
Ubuntu Linux 数据库
ubuntu查看硬件信息
1. lshw lshw命令显示详细硬件信息。 如果要用概要方式显示,可以加上short参数:lshw-short 要显示指定硬件信息,加上class(或C)参数:lshw -classmemory 2. sysstat 监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据, 比如CPU使用率、硬盘和网络吞吐数据。
4893 0

热门文章

最新文章