ffmpeg源码编译-最新版本5.1源码安装ffmpeg+vscode开发环境搭建!

大家好,今天给大家分享一篇关于ffmpeg开发环境搭建的文章。 我很早之前也安装过ffmpeg源码,但是没有给你搭建开发环境,而且当时的版本也比较旧,细节很多。 没有告诉你如何解决!

今天给大家展示详细的ffmpeg最新版本5.1源码安装步骤以及vscode开发环境搭建! 我们要跟上技术的发展,所以这次我们使用最新的版本作为开发环境!

如果需要进行交叉编译,可以参考之前移植rv1126的教程!

好了,开始接下来的分享,推荐在ubuntu18上安装环境!

目录

1.编译安装所需的开源编码格式:

首先,在编译安装这个开源编码格式之前,我们需要了解一下为什么需要它们:

为什么有必要? 如果你对ffmpeg有一点了解的话ffmpeg源码编译,ffmpeg本身就是一个框架,它默认不支持这三种编码格式,所以我们需要自动添加它们来支持!

好了,明白了这些之后,我们就开始下载这三种开源编码格式的源码包:

1.编译aac:

aac下载链接:

wget https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz

开始编译:

- 1、./configure --prefix=/usr/local/ffmpeg/ --enable-shared
- 2、make -j8 && make install

这里我把编译好的东西全部放在/usr/local/ffmpeg/下ffmpeg源码编译,这里只编译动态库; 您可以按照前两个步骤操作:

最终编译好的动态库放在/usr/local/ffmpeg/lib下,头文件在/usr/local/include下:

2.编译x264:

x264下载链接:

wget http://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191024-2245-stable.tar.bz2

开始编译:

1、./configure  --prefix=/usr/local/ffmpeg --enable-static --enable-pic
2、 make -j8 && make install

这里,编译好的东西也放在/usr/local/ffmpeg路径下,编译静态库:

注意:这里如果第一次安装会报错nasm版本太高。 这时需要重新下载nasm源码进行安装编译:

这里给大家介绍nasm的安装步骤; 首先是nasm的下载链接:

wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2

编译步骤:

ffmpeg源码编译-最新版本5.1源码安装ffmpeg+vscode开发环境搭建!

1、./configure
2、make -j8 && make install

好的,这个操作比较简单,按照这个操作即可; 如果你是第一次安装x264,可以通过重新安装nasm来解决错误,然后我们再安装x264:

最终生成的头文件和静态库也放在/usr/local/ffmpeg路径下:

3.编译x265:

x265下载链接:

wget http://ftp.videolan.org/pub/videolan/x265/x265_3.2.tar.gz

编译步骤:

1、cd x265_3.2/build/linux/
2、 ./make-Makefiles.bash
3、 make -j8 && make install

我们可以看到x265编译的库和头文件分别放在/usr/local/lib和/usr/local/include路径下!

2.编译安装最新的ffmpeg源码:

这里我们使用gitte上的源码,github上下载会有点慢:

git clone https://gitee.com/mirrors/ffmpeg/

我们下载了它并将分支切换到5.1版本:

 git checkout -b remotes/origin/release/5.1

然后开始编译:

1、./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-pthreads --enable-libx264 --enable-libx265 --enable-libfdk-aac

2、make -j8 && make install

这里第一步我们是自动强制打开aac、x264、x265编码格式。 这里还有其他enable的功能:

我们发现找不到libfdk_aac,那么怎么解决呢,问题是找不到它的路径,那么我们来配置一下环境变量:

vi ~/.bashrc

添加以下句子:

ffmpeg源码编译-最新版本5.1源码安装ffmpeg+vscode开发环境搭建!

export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig"

然后退出,执行source ~/.bashrc使其生效。 我们为什么要在这里这样做? 这里我们主要通过下面的fdk-aac.pc文件来定位fdk-aac:

这时再次执行昨天的配置就可以解决这个问题。 如果以后遇到类似的问题,可以参考这些方法来解决。 核心就是找到你编译的.pc后缀对应的文件:

然后下面继续编译,这个过程比较长,我只展示make install部分:

最后我们可以在/usr/local/ffmpeg/lib路径下看到生成的库:

可执行程序和头文件:

这里还要配置一下环境变量:

export PATH="$PATH:/usr/local/ffmpeg/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/ffmpeg/lib"

这时我可以在任意终端路径下查看ffmpeg的版本:

ffmpeg源码编译-最新版本5.1源码安装ffmpeg+vscode开发环境搭建!

3、使用vscode搭建ffmpeg开发环境:

首先去vscode官网下载vscode:

https://code.visualstudio.com/

下载以下版本,因为我当前的环境是ubuntu18:

然后直接点击下载的包安装vscode:

最后可以看到安装的vscode:

现在我们来构建一个heh.c项目,并先安装c/c++和gdb插件:

终端编译:

gcc heh.c -lavutil -lavformat

终于:

对嵌入式音频开发感兴趣的同学可以加入txp玩Linux星球来学习。

Android 12正式版已经发布:。 Android 12正式版的代码也已经发布,官方文档也已更新:

本文将带您下载并编译最新的Android 12代码。 本地编译的代码有以下用途

可以刷真机,方便开发者本地调试。 同时可以将代码导出到Android Studio中进行D​​ebug。 可以编译Userdebug版本,root并重新挂载,方便调试系统和App。 在Debug模式下,可以看到很多看不到的User版本。 同时,因为可以看到更多的信息,也方便分析App竞品和App行为分析,可以让学习Android源码变得更加容易。 本地版本可以打开很多系统级的Debug Logs,也可以添加自己的日志。 ,或者自己改变流程

如果不需要下载编译Debugandroid源码编译模块,只是单纯看代码,建议使用cs.android.com。想要深入了解Android系统的朋友以及Android系统开发初学者可以看一下。 建议编译配置如下

闲鱼购买一台二手解锁的Pixel 3及以上(Android 12仅支持Pixel 3及以上),硬盘足够大(最好是ssd),显存足够大(最好是32g,如果没有就用swap),不这么弱的cpu(不然会影响编译时间),一台安装了Linux的台式机 1.代码下载

由于国外使用Google官方下载站,下载不动,有时.repo无法下载,所以本教程以国外镜像站作为反例。 参考官方教程

中科大AOSP镜像站点地址:

下载时只需按照下面的步骤即可(以下方法可以在Ubuntu、WSL、WSL2、Mac上运行,但是在编译旁边的代码时,只能使用Linux,所以建议您使用Linux像Ubuntu这样的系统来下载、编译和开发代码)

1.1 第一步:Repo工具下载

1
2
3
4

mkdir ~/bin
PATH=~/bin:$PATH
curl -sSL 'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo

1.2 第二步:配置个人信息

如果没有安装git,首先自己安装git,然后执行下面的命令,填写你的Name和Email

1
2

git config --global user.name "Your Name" 
git config --global user.email "you@example.com"

比如我填写的

1
2

git config --global user.name "Gracker"
git config --global user.email "dreamtale.jg@gmail.com"

1.2 第三步:创建项目目录

本地建立一个工作目录(名字随意,这里以Android_12_AOSP为例)

1
2

mkdir Android_12_AOSP
cd Android_12_AOSP

1.4 第四步:初始化仓库

仓库初始化有两种形式,一种是直接下载,另一种是添加标签下载特定标签版本。 下面将分别介绍这两种方式,大家可以选择选择哪种形式(注意:这里的两种下载方式会影响后续的驱动下载,所以请记住您使用的是哪种方式,并在驱动下载部分选择合适的驱动)

1.4.1 直接下载(推荐)

这个方法会下载所有代码,默认分支是master,如果不用担心空间的话,可以直接用这些方式下载

1
2
3

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
## REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

这里需要注意的是,默认repo使用的地址是REPO_URL = '',这里我们需要更改REPO_URL,否则会很难下载

修改1:在你的rc文件中,只需添加一个配置:REPO_URL=""修改2:直接打开~/bin/repo,并将REPO_URL行替换为以下内容:REPO_URL = ''

下载.repo后,会有以下信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

➜  Android12 repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
Downloading Repo source from https://gerrit-googlesource.proxy.ustclug.org/git-repo

... A new version of repo (2.17) is available.
... You should upgrade soon:
cp /home/gracker/Code/Android12/.repo/repo/repo /home/gracker/bin/repo

Downloading manifest from git://mirrors.ustc.edu.cn/aosp/platform/manifest
remote: Enumerating objects: 91965, done.
remote: Total 91965 (delta 0), reused 0 (delta 0)

Your identity is: Gracker
If you want to change this, please re-run 'repo init' with --config-name

repo has been initialized in /home/gracker/Code/Android12

如果你选择直接下载,那么就不需要看3.2

1.4.2 下载特定标签

该方法是指只下载单个Tag对应的代码。 可以在此处查看此处的标签。 例如,我的开发机器是 Google Pixel 3 XL。 我在Tag列表中查看对应的型号,看看对应的型号有哪些TAG。 目前Android 12只发布了两个,如下

对应的Tags是android-12.0.0_r3和android-12.0.0_r1,所以我在下载的时候可以制定对应的TAG。 这很有用,因为下载的代码更少,下载速度会更快; 不方便的一点是更新不方便。 Google会定期发送电子邮件告诉您发布了哪些新标签。 您可以根据此更新代码

1

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b  android-12.0.0_r3

1.5 第5步:同步代码

上面第3步只是下载了.repo文件,具体代码还需要执行reposync来下载。由于镜像站点的限制以及下载过程中可能遇到的问题,建议您使用- j4下载

ffmpeg源码编译-最新版本5.1源码安装ffmpeg+vscode开发环境搭建!

1

repo sync -j4

然后就开始了漫长的下载。 由于下载过程中可能会出现失败,所以可以做一个sh步骤循环下载,一醒就下载完成。

1
2
3
4
5
6
7
8

#!/bin/bash
repo sync -j4
while [ $? -ne 0 ]
do
echo "======sync failed ,re-sync again======"
sleep 3
repo sync -j4
done

具体方式

1
2
3
4

touch repo.sh  # 1. 创建 repo.sh 文件
vim repo.sh # 2. 复制上面的脚本内容到 repo.sh 里面,这里你可以使用你自己喜欢的方法打开并修改文件,比如 vscode
chmod a+x repo.sh #3. 修改权限
./repo.sh # 4. 运行脚本,万事大吉

2.驱动下载

代码下载下来后,我们并不急于编译。 如果我们想在真机上运行,​​就需要从厂家下载一些闭源的驱动文件,这样后续编译出来的代码才能搬到真机上。

上面下载代码的时候我们谈到了两种形式,直接下载和下载特定Tag,不同的下载形式对应不同的驱动

2.1 直接下载形式对应的驱动程序

直接下载的代码使用master分支,驱动需要在这里下载

以我的pixel 3 XL为例,我需要下载的驱动程序是

点击Link下载两个文件,然后解压到代码根目录,然后执行sh脚本将驱动发布到合适的位置。 二进制文件及其相应的 makefile 将安装在源树的供应商/层次结构中

2.2 下载特定Tag代码对应的驱动

如果下载时加了-b,那么需要检查相应标签对应的驱动,地址如下:

以我的pixel 3 XL为例,下载的TAG是android-12.0.0_r3(repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-12.0.0_r3)

然后我们需要找到下面的部分,其中SP1A.210812.016.A1对应的是前面的4.2节,即Tag android-12.0.0_r3对应的Build ID是SP1A.210812.016.A1。可以找到对应的Build ID根据你下载的TAG,然后根据Build ID找到对应的驱动

对应4.2节下载的Tag:

2.3 驱动提取

下载的内容解压后,有两个sh文件。 以我的Pixel 3 XL为例,在代码根目录执行,使用D向上翻页,最后自动输入I ACCEPT

1
2

# 解压缩 extract-google_devices-crosshatch.sh
./extract-google_devices-crosshatch.sh

1
2

# 解压缩  ./extract-qcom-crosshatch.sh
./extract-qcom-crosshatch.sh

3. 代码编译

下载完代码和驱动后,就可以开始编译代码了。 由于新版本不再支持Mac编译,建议大家仍然使用Linux进行编译,推荐使用Ubuntu。

3.1 设置编译环境

参考:

在Ubuntu 18.04以上直接运行:

1

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

3.2 设置代码编译环境

每次关闭Shell都需要重新执行以下脚本,相当于配置了编译环境

1

ffmpeg源码编译-最新版本5.1源码安装ffmpeg+vscode开发环境搭建!

source build/envsetup.sh

或者

1

. build/envsetup.sh

3.3 选择编译目标

1

lunch

吃完午饭后,会有一堆设备供你选择。 以我的 Pixel 3 XL 为例,它的代号是,in

Pixel 3 XL对应的代号是:crosshatch

所以我选择编译aosp_crosshatch-userdebug,这里可以输入数字或者直接输入aosp_crosshatch-userdebug

然后脚本会进行一系列配置并输出以下内容

3.4 编译全部

使用 m 来构建一切。 m 可以使用-jN 参数来处理并行任务。 如果您不提供 -j 参数,构建系统将手动选择您认为最适合您的系统的并行任务计数。

1

m

如上所述,您可以通过在 m 命令行上列出特定模块的名称来构建特定模块,而不是构建完整的设备映像。 此外,m还提供了一些用于各种特殊用途的伪目标。 这里有些例子:

droid - m droid 是一个普通版本。 该目标位于此处是因为默认目标需要名称。 all - m all 将构建 m droid 构建的所有内容,以及不包含 droid 标签的所有内容。 构建服务器运行此命令以确保构建包含 Android.mk 文件的树中包含的所有元素。 m - 从树的底部运行构建系统。 这很有用,因为您可以在子目录中运行 make。 如果设置了 TOP 环境变量,它将使用该变量。 如果不设置此变量,它将从当前目录中查找相应的树,试图找到树的顶层。 您可以通过运行不带参数的 m 来构建整个源代码树,也可以通过指定相应的名称来构建特定的目标。 mma - 在当前目录中构建所有模块及其依赖项。 mmma - 在提供的目录中构建所有模块及其依赖项。 croot - cd 到树的底部。 clean - m clean 将删除此配置的所有输出和中间文件。 这与 rm -rf out/ 相同。

运行 m help 查看 m 提供的其他命令

ffmpeg源码编译-最新版本5.1源码安装ffmpeg+vscode开发环境搭建!

输入m后,第一次开始所有编译,等待时间较长,编译时间取决于你的笔记本配置...主要是cpu和显存,建议从32G显存开始,cpu不要太软

编译成功后会有如下输出

4、闪光灯

使用自己编译的UserDebug固件进行Debug,无论是Debug Framework还是Appandroid源码编译模块,都非常方便

编译完成后,开始救砖,以我的测试机Pixel 3 XL为例,依次执行以下命令

1
2
3
4
5
6
7

adb reboot fastboot

# 等待手机进入 fastboot 界面之后
fastboot flashall -w

# 刷机完成之后,执行 fastboot reboot 长期系统即可
fastboot reboot

刷机截图如下

之后手机会手动重启,然后进入主界面。 至此,我们的代码下载-编译-烧写就结束了。

自编译的AOSP Launcher比较丑陋,因为没有这些Google闭源包的支持,它看起来仍然很寒酸,内置的应用程序很少,而且基本没有维护。 这就是给予手机厂商的。

官方 Pixel Launcher 看起来仍然不错(由 Google 开发和维护)

如果在救砖过程中遇到问题,可以使用官方刷机包进行救砖:

5. 结束

本文主要讲如何下载、编译、烧录,以及后续代码导出、修改编译模块、代码Debug等,将在另一篇文章中介绍

关于我&&关于我的博客,我非常希望与您交流,共同进步。 博客内容导航,优秀博客文章记录——Android性能优化必知

一个人可以走得更快,一群人可以走得更远

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 ffmpeg源码编译-最新版本5.1源码安装ffmpeg+vscode开发环境搭建! https://www.wkzy.net/game/127527.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务