简介

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目录下。

参考

fmpeg库编译安装及入门指南(Windows篇)

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: