FFmpeg入门及编译 3

简介: FFmpeg入门及编译

2、编译 x264

x264 库的编译还是比较简单的,与 SDL 一样我们也要先获取其源码,可以通过下面的命令获取 x264 源码:

git clone https://code.videolan.org/videolan/x264.git

可以到这里自取 x264 源码

链接:https://pan.baidu.com/s/17HyuJBrka04DXoS4WOa3tQ

提取码:oqrb

源码获取到后,可以直接在 MSYS2 环境下编译出 Windows 下可用的动态库,具体步骤如下:

# 通过VS X64 Native... 窗口打开MSYS2
cd D:\msys64
msys2_shell.cmd
cd /d/Git-Space/x264/ # 在MSYS2中进入x264源码目录
pacman -S automake autoconf libtool # 安装生成Makefile的工具
CC=cl ./configure --prefix=/usr/local/x264 --enable-shared --disable-asm
make -j 4 && make install

通过上面的命令就可以将 x264 编译出来了。x264 编译好后,其输出的目录结构与 ffmepg 是一样的,在 /usr/local/x264 中包括了 include、lib、bin 等目录。

要特别强调的一点是,我们需要将 lib 目录下的 libx264.dll.lib 文件名修改为 libx264.lib,否则 ffmpeg 编译时会报 “无法找到该库” 的错误。

3、编译 fdk-aac

fdk-aac 的编译与 SDL 类似,它同样要使用 CMake 生成 VS 工程文件,之后再通过 VS 编译该库。

首先,通下面的的命令获取 fdk-aac 源码:

git clone https://github.com/mstorsjo/fdk-aac.git

可以到这里自取 fdk-aac 源码:

链接:https://pan.baidu.com/s/1ViuYEtEFFh71w9ZRgLaesA

提取码:hwf5

之后打开 CMake-GUI,在 CMake-GUI 中指定 SDL 源码所在路径(D:/Git-Space/fdk-aac)以及编译后的输出路径(D:/CMake/usr/local/fdk-aac)

随后执行

Configure -> Generate -> Open Project

生成 VS 工程。有了 VS 工程,我们就可以通过 VS2022 来编译 FDK-AAC 了。

分别在 Release 和 Debug 模式下,重新生成一下 All_BUILD 子项目。

没啥问题的话 FDK-AAC 就编译好了,你可以去 D:\CMake\usr\local\fdk-aac\Debug 和 D:\CMake\usr\local\fdk-aac\Release 目录下看看有没有对应的 lib 文件

D:\CMake\usr\local\sdl\Debug 目录如下:

D:\CMake\usr\local\fdk-aac\Release 目录如下:

为了满足要求,我们需要在指定输出目录下创建 lib 目录,并将 fdk-aac.lib 和 fdk-aac.dll 文件拷贝到 lib 目录下。同时在 lib 目录下创建 pkgconfig 目录,将 fdk-aac.pc 文件拷贝到该目录中。


但是这里发现一个问题,就是目录下没有 include 目录

9b03d4f938714f0eb435e9fe97449411.png

为了解决这个问题,我又用 MSYS2+mingw 的方式重新编译了一遍 fdk-aac,这种方式是可以生成 include 头文件的

①、打开 MSYS2 MINGW64

②、在 fdk-aac 目录下执行如下命令

pacman -S mingw-w64-x86_64-gcc
./autogen.sh
./configure --prefix=/usr/local/fdk-aac --enable-shared
make -j4
make install

然后将生成的头文件手动拷贝到了 /usr/local/fdk-aac 目录下即可。

最终完整的目录结构如下所示:

/usr/local/fdk-aac
 |------------ lib
 |              |-- fdk-aac.lib
 |              |-- fdk-aac.dll
 |              |-- pkgconfig
 |                     |----- fdk-aac.pc
 |------------ include

此外,我们还要修改 fdk-aac.pc 中的内容,将其中的库路径修改为指定的输出路径

八、FFmpeg 使用上述编译好的库

首先,我们要设置环境变量 PKG_CONFIG_PATH,通过它告诉 FFmpeg 上述几个库从哪儿可以找到,具体的设置方法如下:

在 MSYS2 窗口中打开 .bashrc

pacman -S vim 
vim ~/.bashrc

在 ~/.bashrc 中设置环境变量

export PKG_CONFIG_PATH=/d/CMake/usr/local/sdl/lib/pkgconfig:/usr/local/x264/lib/pkgconfig:/d/CMake/usr/local/fdk-aac/lib/pkgconfig:$PKG_CONFIG_PATH
:wq #保存并退出vim  

让环境变是生效

source ~/.bashrc

接下来,重新生成 FFmpeg 的 Makefile 文件,并重新编译

首先进入到 ffmpeg 源码目录,执行下列命令

./configure --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-ffprobe --disable-doc --enable-x264 --enable-gpl --enable-fdk-aac --enable-nonfree --toolchain=msvc
make clean
make -j 4 && make install

最后,将 sdl 的 dll、x264 的 dll 以及 fdk-aac 的 dll 拷贝到 ffmpeg 的 bin 目录下,这样就可以正确的执行 ffmpeg.exe 或 ffplay.exe 命令了。

进入 ffmpeg/bin 目录下,执行以下命令,如果能够输出版本信息,则说明正常

./ffmpeg.exe -version


ae02dbdef98242c9aa2722d35a18a5c0.png

目录
相关文章
|
3月前
|
Linux 编译器 数据安全/隐私保护
Windows10 使用MSYS2和VS2019编译FFmpeg源代码-测试通过
FFmpeg作为一个流媒体的整体解决方案,在很多项目中都使用了它,如果我们也需要使用FFmpeg进行开发,很多时候我们需要将源码编译成动态库或者静态库,然后将库放入到我们的项目中,这样我们就能在我们的项目中使用FFmpeg提供的接口进行开发。关于FFmpeg的介绍这里就不过多说明。
76 0
|
7月前
|
编解码 API 开发工具
FFmpeg入门及编译 1
FFmpeg入门及编译
97 0
|
24天前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(二)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(二)
12 0
|
7月前
|
API C语言 C++
FFmpeg入门及编译 2
FFmpeg入门及编译
80 0
|
3月前
|
编解码 Ubuntu C++
WebAssembly01--web 编译FFmpeg(WebAssembly版)库
WebAssembly01--web 编译FFmpeg(WebAssembly版)库
21 0
|
3月前
|
存储 Ubuntu 开发工具
ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译
ffmpeg笔记(二)windows下和ubuntu-16.04下ffmpeg编译
|
4月前
ffmpeg的下载、编译与安装
ffmpeg的下载、编译与安装
104 0
|
6月前
|
编译器 计算机视觉
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV vs2015编译
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV vs2015编译
|
8月前
|
Ubuntu Linux
ffmpeg编译x265
ffmpeg编译x265
257 0
ffmpeg编译x265
|
8月前
超简洁ffmpeg编译ffplay
超简洁ffmpeg编译ffplay
53 0
超简洁ffmpeg编译ffplay