简介
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证 。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、[Mac OS X](https://baike.baidu.com/item/Mac OS X/470629?fromModule=lemma_inlink)等。
用户既可以使用命令行直接对音视频进行操作(CLI),也可以调用其开源库进行个性化的功能开发(SDK)。
如果要在自己的程序中使用 ffmpeg ,那么使用它的 SDK 是最好的选择。当前 ffmpeg 包含以下几个库:
- libavcodec : 编/解码
- libavfilter : 帧级操作(如添加滤镜)
- libavformat : 文件 I/O 和 封装/解封装
- libavdevice : 设备视频文件的封装/解封装
- libavutil : 通用工具集合
- libswresample : 音频重采样、格式处理、混音等
- libpostproc : 预处理
- libswscale : 色彩处理和缩放
FFmpeg编译
为什么要编译它呢?
由于ffmpeg 目前不提供预编译的库文件,而是需要自己下载源码并编译,而且可以自定义配置和优化,比直接下载预编译的二进制的版本更加灵活。
编译安装准备
在 Windows 下,编译需要做的准备如下:
- 安装并配置 MYSY2
- 安装 git (可选)
- ffmpeg 源码
安装 MSYS2 及编译工具链
MSYS2 是 Windows 下的一组编译套件,它可以在 Windows 系统中模拟 Linux 下的编译环境,如使用 shell 运行命令、使用 pacman 安装软件包、使用 gcc (MinGW) 编译代码等。简单来说,使用 MSYS2 ,你可以通过在 Linux 下非常熟悉的各种命令,来编译 Windows 下的软件。
MSYS2 的安装也非常省心,只需要到 MSYS2 官网 下载.exe
安装包,管理员身份运行安装即可。
注意安装盘必须是NTFS,路径要全使用 ACSII 字符,不能有空格。建议就安装在默认位置,如果不想装在 C 盘,就直接改下盘符,装在其他盘的根目录。
安装完毕后,开始菜单里就会有下面的程序:
点击它们就会启动一个 shell 窗口,Just like on Linux ! 这个 shell 程序默认是 Mintty,类似 Linux 系统中的 bash shell。
MSYS2 支持多个编译器工具链,它们的环境是独立的(可以去安装文件夹查看),
在开始菜单打开MSYS2 MSYS,使用命令pacman -Syu
升级所有库
在编译安装FFmpeg之前,先安装FFmpeg编译需要的依赖和工具
pacman -S mingw-w64-x86_64-toolchain # mingw64编译工具链,win下的gcc
pacman -S base-devel # 一些基本的编译工具
pacman -S yasm nasm # 汇编器
pacman -S mingw-w64-x86_64-SDL2 # SDL2 是ffmpeg依赖的,因为没有它ffpaly不能用
安装完毕后,可以输入gcc -v
查看 gcc 版本:
最后需要添加环境变量。右击此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 选择 Path
(用户变量和系统变量都要)-> 编辑 -> 新建,添加编译工具链的路径:
添加环境变量这一步,是为了以后使用其他编辑器或者IDE时,能够找到 MINGW64 的编译工具链。在 MSYS2 中编译 ffmpeg 本身是不需要添加 Windows 的环境变量的。
ffmpeg 源码下载
在 ffmpeg 官网 下载源码,目前最新的版本是 5.1.2 。注意不要下载成 executable files 了,那个是可以直接运行的 CLI 程序。
三个 download 都可以,只是压缩包格式不一样:
下载后解压到一个好找的文件夹即可。
在 MSYS2 的 shell 中,打开源码所在文件夹。
执行编译安装命令
我们编译安装ffmpeg选择使用mingw64终端 (如果你也是64位系统的话)。
-
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-sdl2 --disable-static
括号中的值都是可选的。
configure说明 --prefix=/usr/local/ffmpeg # 安装位置 --enable-debug # 启动debug调试 --enable-sdl2 # 引入SDL2库,ffplay编译必须; --enable-static # 编译静态库(默认开启) --enable-shared # 编译动态库(默认关闭) --enable-libvpx # VP8/VP9 视频编码器 --enable-libvmaf # VMAF视频质量评估工具 --disable-x86asm # 未知 --enable-gpl # 允许使用GPL(默认关闭) --enable-nonfree # 允许使用非免费的代码, 产生的库和二进制程序将是不可再发行的 --enable-libx264 # 启用H.264编码(默认关闭) --enable-libfdk-aac # 使能aac编码(默认关闭) --disable-optimizations # 禁用编译器优化 --disable-asm # 禁用全部汇编程序优化 --enable-librtmp # 使用librtmp拉流(默认关闭)
更多详细说明可查询
ffmpeg ./configure参数说明
-
编译:make -j 4
4 表示编译需要用4个线程。
-
安装 sudo make install
这一步都安装完成了,在安装目录下的bin目录执行.\ffmpeg.exe -version
设置环境变量
为了能够每次打开的时候,都能执行ffmpeg命令。在配置文件中末尾添加 export PATH=$PATH:/d/repos/ffmpeg/ffmpeg_5.2.1_install/bin
这个命令。配置文件就是msys的安装位置/msys64/etc/profile
.这个文件和 Linux 下的/etc/profile
文件作用是类似的。
ffmpeg 集成x264
libx264 编译安装
ffmpeg 提供了相当多的外部库支持,但是如果要使用的话需要自己编译外部库。
libx264 由 VideoLAN 组织所发布,它是 H.264 的一套性能较好的软编码器实现(不包括解码器)。H.264 (AVC) 是当前较常用的视频编码,目前 H.264 的继任者 H.265 (HEVC) 也渐趋成熟, VideoLAN 也有一套实现 libx265。
-
进入x264官网页面下载
官方建议使用 git 下载源码(下载压缩包再解压应该也是一样的):
git clone https://code.videolan.org/videolan/x264.git
-
进入源码目录
-
执行以下命令进行编译和安装
编译安装过程和ffmpeg相似。
./configure --prefix=安装路径 --enable-shared
make -j 4
make install
– enable-shared ,同时在系统中生成共享库,方便其他程序调用。
-
查看libx264是否安装成功
到x264的可执行文件目录,执行
./x264.exe --version
打印类似如下信息,安装成功。
编译ffmpeg库,集成libx264
-
检查 PKG_CONFIG_PATH 环境变量是否正确配置
pkg-config 工具通过 PKG_CONFIG_PATH 环境变量来查找库的 pkg-config 配置文件。ibx264的pkg-config是一个用于管理库依赖的工具。它可以帮助开发者在编译和链接源代码时自动包含库文件,并提供必要的编译器和链接器选项。此外,它还可以与其他开发工具集成,例如Autotools和CMake,以实现更完整和自动化的构建过程。
可以执行以下命令确认 PKG_CONFIG_PATH 是否包含了 libx264 的 pkg-config 配置文件路径:
echo $PKG_CONFIG_PATH
如果没有包含,你可以使用以下命令将 libx264 的 pkg-config 配置文件路径添加到 PKG_CONFIG_PATH 中:
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/f/software/install/ffmpeg/x264_install/lib/pkgconfig
-
编译安装ffmpeg
./configure --prefix=/f/software/install/ffmpeg/ffmpeg_install \ --enable-shared --enable-sdl2 --disable-static --enable-gpl --enable-libx264 \ --extra-cflags=-I/f/softweg/x264_install/include \ --extra-ldflags=-L/f/software/install/ffmpeg/x264_install/lib make -j 4 make install
这里使用了以下参数:
- 加入
--enable-libx264
参数
- 加入
-
加入
--enable-gpl
参数。否则会提示libx264 is gpl and --enable-gpl is not specified
-
–extra-cflags=“-I/f/softweg/x264_install/include”:指定 x264 的头文件路径为 /f/softweg/x264_install/include。
- –extra-ldflags=“-L/f/software/install/ffmpeg/x264_install/lib”:指定 x264 的库文件路径为/f/software/install/ffmpeg/x264_install/lib,并链接到 libx264.so 动态库文件。
注意: 有一个坑就是 编译安装完成之后,执行ffmpeg、ffplay等命令都没有反应。或者双节ffmpeg.exe 提示 由于找不到libx264-164.dll,无法继续执行代码。重新安装程序可能会解决此问题。这是因为我们libx264和ffmpeg的安装路径不在同一个地方。需要libx264安装目录的bin文件夹下的libx264-164.dll放到ffmpeg安装路径的bin目录下。文章来源:https://www.toymoban.com/news/detail-766002.html
参考
fmpeg库编译安装及入门指南(Windows篇)文章来源地址https://www.toymoban.com/news/detail-766002.html
到了这里,关于音视频开发三:Windows环境下FFmpeg编译安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!