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

目录
相关文章
|
1月前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
35 0
|
1月前
|
Web App开发 编解码 安全
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
236 4
|
1月前
|
Linux 编译器 数据安全/隐私保护
Windows10 使用MSYS2和VS2019编译FFmpeg源代码-测试通过
FFmpeg作为一个流媒体的整体解决方案,在很多项目中都使用了它,如果我们也需要使用FFmpeg进行开发,很多时候我们需要将源码编译成动态库或者静态库,然后将库放入到我们的项目中,这样我们就能在我们的项目中使用FFmpeg提供的接口进行开发。关于FFmpeg的介绍这里就不过多说明。
109 0
|
1月前
|
Linux
Linux编译FFmpeg
Linux编译FFmpeg
28 0
|
1月前
|
存储 编解码 缓存
FFmpeg编程入门
FFmpeg编程入门
24 0
|
3天前
|
存储 编解码 Linux
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
14 1
|
13天前
|
Ubuntu
蓝易云 - Ubuntu18.04安装编译ffmpeg库
现在,你应该已经在你的Ubuntu 18.04系统上成功安装和编译了FFmpeg库。你可以通过运行 `ffmpeg -version`来验证安装是否成功。
16 0
|
1月前
|
Ubuntu Linux Shell
Android-NDK-clang 编译 FFmpeg
Android-NDK-clang 编译 FFmpeg
44 0
|
1月前
|
移动开发 Unix Linux
ffmpeg编译so
ffmpeg编译so
21 0
|
1月前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(二)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(二)
23 0