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得错误。修改方法同上。