windows编译ffmpeg,支持h264,qsv,aac

本文介绍如何在Windows环境下为FFmpeg配置编译环境,包括libx264、intel QSV和fdk-aac等编解码器的支持。通过详细步骤说明,帮助读者成功编译出适用于不同场景需求的FFmpeg库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows下ffmpeg的编译环境,windows下编译ffmpeg
在ffmpeg源码目录下新建文件夹3rdparty,3rdparty里面创建include和lib两个文件夹,分别存放依赖编码器的头文件和库文件。
在这里插入图片描述

在这里插入图片描述

ffmpeg支持libx264

首先下载编译libx264,windows下编译libx264
将生成的libx264.lib导入3rdparty/lib,x264_config.h和x264.h导入3rdparty/include。打开msys_vs2017.bat,进入ffmpeg源码目录,执行下面命令,就会生成支持libx264编码的ffmpeg库了。

./configure --toolchain=msvc --disable-ffplay --disable-ffmpeg --disable-ffprobe --disable-static --disable-debug --e
nable-shared --enable-asm --enable-version3 --enable-gpl --enable-encoder=libx264 --enable-decoder=h264 --enable-libx26
4 --extra-cflags="-I./3rdparty/include" --extra-ldflags="-libpath:./3rdparty/lib"
make
make install

注:这里因为工作需要,所以引用的是libx264动态库,在使用的时候需要把libx264.dll与ffmpeg库一起使用

ffmpeg支持intel qsv硬编码

首先编译qsv依赖mfx库,下载源码,使用cmake进行编译,生成mfx.lib文件。
将源码中mfx目录拷贝到3rdparty/include,生成的mfx.lib拷贝到3rdparty/lib,并重命名为libmfx.lib。打开msys_vs2017.bat,进入ffmpeg源码目录,执行下面命令,就会生成支持qsv编码的ffmpeg库了。

./configure --toolchain=msvc --disable-ffplay --disable-ffmpeg --disable-ffprobe --disable-static --disable-debug --e
nable-shared --enable-asm --enable-version3 --enable-encoder=h264_qsv --enable-decoder=h264_qsv --enable-libmfx --extra
-cflags="-I./3rdparty/include" --extra-ldflags="-libpath:./3rdparty/lib"
make
make install

注:编译可能出现libmfx not found错误。在libmfx.lib路径没问题得情况下,在vs中mfx工程中修改属性->代码生成->运行库->MT,重新编译libmfx,在编译ffmpeg。

ffmpeg支持fdk-aac

编译fdk-aac支持音频编解码,下载源码
在3rdparty/include中创建目录fdk-aac,进入fdk-aac源码目录,将下面头文件拷贝到新创建的目录中。
在这里插入图片描述
在fdk-aac源码目录下创建CMakeLists.txt,将下面内容拷贝进去,然后使用cmake进行编译并将生成得fdk-aac.lib并拷贝到3rdparty/lib。


# A cmake file for compile fdk-aac
# Author: kaychan
# Mail: 1203375695@qq.com
#
# fdk-aac download: http://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html
# fdk-aac version: fdk-aac-2.0.1
# cmake version: cmake-3.16.0-rc4-win64-x64
 
# Disable in-source builds to prevent source tree corruption.
if(" ${CMAKE_SOURCE_DIR}" STREQUAL " ${CMAKE_BINARY_DIR}")
  message(FATAL_ERROR "
FATAL: In-source builds are not allowed.
       You should create a separate directory for build files.
")
endif()
 
cmake_minimum_required ( VERSION 3.0 )
 
# 声明工程
project ( fdk-aac )
 
set ( SOURCE_FILES )
 
# 遍历添加源码文件
foreach ( subdir
    libAACdec libAACenc libArithCoding 
	libDRCdec 
	libFDK 
    libMpegTPDec libMpegTPEnc
    libPCMutils
	libSACdec libSACenc libSBRdec libSBRenc libSYS)
 
    set ( incdir ${CMAKE_SOURCE_DIR}/${subdir}/include )
	set ( srcdir ${CMAKE_SOURCE_DIR}/${subdir}/src )
	
	# 指定包含目录
    include_directories ( ${incdir} )
	
	# 安装include头文件
    install ( DIRECTORY ${incdir}/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include )
 
    file ( GLOB srcfiles
        ${srcdir}/*.cpp
        ${srcdir}/*.h )
    list ( APPEND SOURCE_FILES ${srcfiles} )
endforeach ()
 
# 编译/安装静态库
add_library ( fdk-aac STATIC ${SOURCE_FILES} )
install ( TARGETS fdk-aac ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )
 
# 编译/安装动态库
# add_library ( fdk-aac SHARED ${SOURCE_FILES} )
# install ( TARGETS fdk-aac LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib )

进入ffmpeg源码目录,执行下面命令,就会生成支持音频aac编码的ffmpeg库了。

./configure --toolchain=msvc --disable-ffplay --disable-ffmpeg --disable-ffprobe --disable-static  --disable-debug -- enable-asm --enable-version3
 --enable-shared --enable-encoder=aac --enable-decoder=aac  --enable-libfdk-aac --enable-no nfree --extra-cflags="-I./3rdparty/include" 
 --extra-ldflags="-libpath:./3rdparty/lib" 
make
make install

注:编译也可能出现fdk-aac not found得错误。修改方法同上。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值