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

目录
相关文章
|
7月前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
96 0
|
2月前
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
81 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
2月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
196 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
2月前
|
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开发知识可参考相关书籍。
108 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
7月前
|
存储 编解码 缓存
FFmpeg编程入门
FFmpeg编程入门
90 1
|
3月前
|
内存技术
速通FFmpeg入门
速通FFmpeg入门
38 5
|
7月前
|
Linux
Linux编译FFmpeg
Linux编译FFmpeg
150 0
|
6月前
|
存储 编解码 Linux
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
rodert教你学FFmpeg实战这一篇就够了 - 音视频处理入门篇
70 1
|
6月前
|
存储 编解码 自然语言处理
一篇文章讲明白FFmpeg从入门到精通:SEI那些事
一篇文章讲明白FFmpeg从入门到精通:SEI那些事
159 0
|
6月前
|
Ubuntu
蓝易云 - Ubuntu18.04安装编译ffmpeg库
现在,你应该已经在你的Ubuntu 18.04系统上成功安装和编译了FFmpeg库。你可以通过运行 `ffmpeg -version`来验证安装是否成功。
72 0