1. windows 下面编译ffmpeg真可谓折腾,网上资料大多是使用mingw+msys,mingw用来生成32位程序,它的内部集成了msys,下载地址: Welcome to MinGW.OSDN,下载并安装即可(安装时加上msys组件),如下图:
2. 如果要编译x64位的ffmpeg,得用mingw64,但mingw64没有集成msys,需要手动搭建mingw64和msys的编译环境,比较费劲。
msys2集成了mingw x86 和 mingw x64,就可以比较方便地切换编译环境。
msys2官方网站下载安装包: MSYS2
也可以直接去清华大学软件站上下载安装,并根据其说明添加软件包镜像源: msys2 | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
msys2安装完成后,在cmd里面执行:C:/msys64/msys2_shell.cmd -mingw64(默认安装在C:/msys64路径下),打开64位编译环境。或者直接在开始菜单栏打开 MSYS2 MinGW x64。
打开这个编译环境之后,可以发现这个环境都是空的,连gcc也没有,因此需要安装编译工具:
pacman -Su
pacman -S mingw-w64-x86_64-toolchain
pacman -S base-devel
pacman -S yasm
# 如果需要编译出ffplayer.exe的话,应该还需要安装SDL(可以选择不生成ffplayer.exe)
pacman -S mingw-w64-x86_64-SDL2
编译工具装好之后,开始尝试编译ffmpeg,期间缺少什么库,就安装什么库(源码编译安装,或者pacman工具安装,就像linux上一样),一般可以成功。(ps: 编译libx264依赖库,参考:https://blog.csdn.net/nodeman/article/details/106431858)
mkdir install_dir
cd ffmpeg
./configure --prefix=../install_dir --disable-static --enable-shared --disable-ffplay --enable-ffmpeg --disable-x86asm --enable-gpl --enable-libfreetype --enable-libx264 --enable-encoder=libx264 --enable-decoder=h264 --disable-debug
make -j8
make install
有一个问题,使用msys2编译动态库的时候,有些mingw内部的dll库没有被编译进去,所以脱离了这个编译环境使用会报缺少dll, 一般在C:\msys64\mingw64\bin或者C:\msys64\mingw32\bin下面就能找到这些dll,将它们拷贝到.exe可执行文件同目录下,就可以正常使用了,也可以直接编成静态库,可以避免dll找不到的问题。
3. ffmpeg编程实践
用ffmpeg处理视频可以分为5个步骤:"解封装、解码、加滤镜、编码、封装",根据需求确定用哪几个步骤组合,实现不同的功能。可以参考我写的一个小项目,希望对大家有帮助。