编译windows下使用的fdk-aac、x264及ffmpeg库

一、说明

本文分别介绍了windows和linux环境下编译windows下使用的ffmpeg,推荐使用linux交叉编译(可以用windows下的ubuntu子系统)。ubuntu交叉编译已经验证能正常运行,MSYS2+MinGW64编译的在MinGW64下能正常运行,在windows的cmd命令界面运行还存在问题。

二、使用MSYS2+MinGW64编译

1. 1. 下载msys2,官方地址:http://www.msys2.org/,这里选择64位的安装

在这里插入图片描述

2. 运行MSYS2,执行如下命令配置编译环境

在这里插入图片描述

pacman -S make
pacman -S yasm
pacman -S diffutils
pacman -S pkg-config
pacman -S mingw-w64-x86_64-gcc
pacman -S nasm //nasm用于编译x264的汇编代码
pacman -S mingw-w64-x86_64-SDL2 //ffplay编译依赖sdl2

pacman -S autoconf //用于编码fda-aac时运行。/autogen.sh生成configure文件
pacman -S automake
pacman -S libtool

3. 关闭MSYS界面,并运行MSYS2 MinGW x64

在这里插入图片描述

4. 下载并编译libfdk-aac

下载源码:$ git clone https://github.com/mstorsjo/fdk-aac.git
解压并进入到fdk-aac目录,在MinGW x64下,进入d盘的方式:

 cd "/d/Study/ffmpeg/fdk-aac-master/" #需要加引号
 
 #在fdk目录下执行如下命令
./autogen.sh
./configure --prefix=/mingw64/ --enable-shared
make -j4
make install

5. 下载并编译x264

下载源码:$ git clone https://code.videolan.org/videolan/x264.git
解压并进入x264源码根目录下依次执行:

./configure --prefix=/mingw64/ --enable-shared
make -j4
make install

6. 下载并编译ffmpeg

下载源码: https://ffmpeg.org/download.html
解压并进入ffmpeg源码跟目录下依次执行:

./configure --prefix=/usr/local/ --enable-libx264 --enable-libfdk-aac --enable-gpl --enable-nonfree --enable-shared --enalbe-static
make -j4
make install

三、ubuntu交叉编译

1. 搭建mingw-w64编译环境

网上有人写了一个搭建此环境的脚本,网址:https://github.com/Zeranoe/mingw-w64-build
运行下载的脚本:

./mingw-w64-build x86_64

/*
 *如果运行脚本报如下错误:
 *missing required executable(s): flex bison makeinfo m4
 *说明flex bison等命令不支持,需要安装相应的工具
 */
//可以按照如下的方式安装相应的工具
caixuefeng@xuefeng:/mnt/d/Study/ffmpeg/mingw-w64-build-master$ flex

Command 'flex' not found, but can be installed with:

sudo apt install flex
sudo apt install flex-old

caixuefeng@xuefeng:/mnt/d/Study/ffmpeg/mingw-w64-build-master$ sudo apt install flex

脚本正常执行后,需要设置环境变量:

export PATH="$PATH:/home/caixuefeng/.zeranoe/mingw-w64/x86_64/bin"

可以通如下命令检查环境是否安装成功:
在这里插入图片描述

2. 编译libfaac

#安装autoconf
sudo apt install autoconf

#安装libtool
sudo apt install libtool-bin

#执行libfaac目录下的autogen.sh生成configure
./autogen.sh

./configure --host=x86_64-w64-mingw32 --prefix=/home/caixuefeng/libaac --enable-static

make -j32
make install

3. 编译x264

sudo apt install nasm

./configure --enable-static --host=mingw64 --prefix=/home/caixuefeng/libx264 --cross-prefix=x86_64-w64-mingw32-

make -j32
make install

4. 编译SDL2

下载地址:https://www.libsdl.org/

./configure --prefix=/home/caixuefeng/libSDL2 --host=x86_64-w64-mingw32

make -j32
make install

sudo apt install libsdl2-dev

5. 编译ffmpeg

./configure --arch=x86 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --enable-libx264 --enable-libfdk-aac --enable-sdl2 --enable-shared --enable-nonfree --enable-gpl --enable-version3 --enable-ffplay --prefix=/home/caixuefeng/ffmpeg

# 修改ffbuild/config.mak使能FFPLAY,编译后才能生成ffplay
vim ffbuild/config.mak
#将!CONFIG_FFPLAY=YES修改为CONFIG_FFPLAY=YES(去掉!)

make -j32
make install
  • 报错:ERROR: libx264 not found
    可以通过pkg-config --cflags --libs libx264命令,看是否可以找到 libx264。
    在这里插入图片描述
    如果找不到,就说明确实是这个问题。解决的办法是设置环境变量。
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/caixuefeng/libx264/lib/pkgconfig
  • 报错:ERROR: libfdk-aac not found
    同上面的libx264 not found处理。
    如果出现下图的错误:
    在这里插入图片描述
    将ffmpeg/ffbuild/config.mak文件下的下面两行改为如下内容即可链接成功。
EXTRALIBS-avdevice=-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi -lgdi32 -lm -latomic -lvfw32 -L/home/caixuefeng/libSDL2/lib -lmingw32 -lSDL2main -lSDL2 -mwindows -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid  -lsetupapi -static-libgcc

EXTRALIBS-ffplay=-L/home/caixuefeng/libSDL2/lib -lmingw32 -lSDL2main -lSDL2 -mwindows -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lsetupapi -static-libgcc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值