前期准备:
- Windows10+WSL,WSL我在Windows商店下载的Ubuntu18
- VisualStudio2019,其他版本应该也可以试试
- ffmpeg新版源码,我的是4.0
对,就这么少。很多开发者默认就有了。
过程:
1、开始菜单 VisualStudio里找到”Developer Command Prompt for VS 2019“,运行
提示:Win键,输入for VS,会立刻出现,回车即可执行
2、输入bash,进入linux子系统
3、如果没有yasm,运行apt install yasm安装,唯一的安装了。甚至好像gcc也不需要,因为我们用msvc。也有可能是需要的,因为我编译出来的exe又可以在wsl里运行,提示的是gcc编译。
如果你不是root用户,可能需要sudo
看一下我的配置,先不用运行:
ffmpeg4.2以前版本需要此步骤
为./configure添加两个参数: --cc=cl.exe --ld=link.exe
两个.exe非常重要,默认的configure在bash中执行cl,是找不到cl.exe的,link同理,所以我们手动指定,不会报错。
--enable-x86asm在以前某些版本可能需要改为--enable-yasm
=msvc --arch
--enable-optimizations很重要,否则会导致汇编里的函数不能被引用。报ff_cpu_id等引用错误,就是这个问题了。
ffmpeg4.2以前版本需要此步骤
手动编辑configure里的几处dumpbin,改为dumpbin.exe,与上同理。
手动编辑compat/windows/makedef里的dumpbin和lib,与上同理。
可以运行上面的配置了。
祝你不会出错。警告无所谓。
make install
收获!!!正文结束!
有各种ffmpeg的编译方法,看到哪些用MinGW或者MSYS/2的编译方法我就恐惧,因为步骤太多,步骤多其实不是大事,但因为尝试几次都失败了,有任何一个步骤有差错就会前功尽弃。并且,教程作者的环境也不一定与我们的相同。
经过研究,目前我的这个方法应该是目前网上最简编译方法了。看下成果:
虽然有乱码,但也是成功了。 输出有例子,头文件,共享库,ffmpeg.exe,ffprobe.exe,没有ffplay,还没研究。bin目录文件列表:
因为我更喜欢这种dll的库,所以就是上面这样了。
其他情况:
1、将其他人编译的ffplay.exe放入输出目录,是可以正常使用的。
2、--cc=cl.exe可以修改为--cc='cl.exe -wd4090 -wd4010 -wd4267',这样就去掉了大多数警告,make过程更清澈。
wsl支持良好。
警告:WSL2编译未通过,lib.exe会导致阻塞,未查到原因,你若解决,请告知
ffmpeg团队已经为wsl编译提供支持,尽量选择新版本。