FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库

先决条件:

  • 需要安装msys2(是一个在windows中模拟linux操作系统的软件) 由于在linux中编译ffmpeg比较简单,
    所以利用一下msys2, 直接去官网下载安装即可

  • 需要安装visual studio 2019

一,配置mys2

使用vs2019+msys2的环境来编译ffmpeg源码
1,打开vs2019命令行工具
在这里插入图片描述
想要编译出64位的库就选64位的命令行工具, 这里选用32位的作为示范
2,输入cl命令 确认下存在编译工具FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第1张图片
3,打开msys2_shell.cmd文件 : 修改文件
在这里插入图片描述
4,在之前打开的vs2019命令行工具输入命令:

msys2_shell.cmd -mingw32

命令执行后会打开msys2命令行

5,在msys2中输入cl命令 以确认继承了vs2019的环境

FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第2张图片
至此msys2环境配置完成

二, 在msys2中安装编译所需的依赖

在编译ffmpeg需要编译汇编代码, 需要安装编译汇编代码的工具:
msys2中的安装指令是 pacman

pacman -S nasm
pacman -S yasm

还有一些其他工具 :

pacman -S make cmake
pacman -S diffutils 比较工具 (避免生成makefile时出错)
pacman -S pkg-config 库配置工具
pacman -S git

三,编译源码

ffmpeg库中是默认支持 x264,x265,aac的解码的, 但是不支持其编码 所以要手动编译成x264,x265,aac库
编译x264
下载x264源码
http://download.videolan.org/pub/videolan/x264/snapshots/
源码放进msys2/home路径下

1,进入x264源码目录
在这里插入图片描述
2,指定编译工具, 指定编译成动态库dll

CC=cl ./configure --enable-shared

FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第3张图片
3,编译并安装

make -j32

编译完成后生成文件
FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第4张图片
执行make -install
FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第5张图片
x264动态库被安装到 /usr/local/bin中
lib库/usr/local/lib中
编译x265
在官网下载x265源码
FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第6张图片
源码放到msys2/home目录中
进入build/msys2-cl目录
注意:这里不能使用msys2中usr/bin中的cmake(暂时改个文件名即可 改成cccmake)
将usr/bin中的cmake暂时改个文件名即可改成cccmake
运行 ./make-Makefile.sh
等待编译完成
在这里插入图片描述
安装

make install

FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第7张图片
生成的文件复制到msys2/usr/local目录中(include , bin , lib 三个文件夹)
修改usr\local\lib\pkgconfig\x265.pc
在这里插入图片描述

三,编译AAC

下载aac编码器源码
源码自身就有MakeFile可以不用msys2
可以直接在vs2019控制台中运行编译
执行 nmake -f Makefile.vc开始编译
在这里插入图片描述
编译完成生成文件
FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第8张图片
指定安装路径

nmake -f Makefile.vc prefix=./install install

同样生成三个文件夹
FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第9张图片
生成的三个文件都放进msys2/usr/local目录
在usr/local/lib/pkgconfig中编辑并生成文件fdk-aac.pc

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: Fraunhofer FDK AAC Codec Library
Description: AAC codec library
Version: 
Libs: -L${libdir} -lfdk-aac 
Libs.private: 
Cflags: -I${includedir}

四,编译ffmpeg源码

下载源码这里用4.3版本放在home目录
msys2中执行命令 只需要SDK

CC=cl.exe ./configure --prefix=./install --toolchain=msvc --enable-shared --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265

生成makefile时出现的错误:
在ffbuild/config.log记录了错误原因

原因:系统在默认路径MSYS2/mingw32/lib找不到pkgconfig目录
解决:MSYS2/usr/local/lib/pkgconfig搬移到MSYS2/mingw32/lib

其他一些找不到库错误基本是usr/local/lib中名字不符, 修改名字即可
ffbuild/config.log查看错误记录, 并将编译的库修改成ffmpeg认得到的名字FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第10张图片

执行 make -j32 开始编译
编译完成
FFmpeg源码编译出支持音频AAC编码以及H264,H265编码的库_第11张图片

你可能感兴趣的:(音视频开发,C++,音视频,ue4,cocos2d)