WSL 是 windows10 自带的,全称 Windows Subsystem Linux,也就是在 Windows 套 Linux,这是一种半虚拟化技术,跟 VMware 有点区别。在 WSL 里面编译 FFmpeg 比 msys2 快一些。
第一步,以管理员身份 打开 Windows PowerShell ,输入以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
第二步,打开 "启用或关闭 Windows 功能",勾选 适用于 Linux 的 Windows 子系统
第三步,重启电脑。
第四步,打开 CMD 命令行,输入 wsl.exe
,会提示一个网址,如下如:
第四步,用Edge浏览器打开网址 https://aka.ms/wslstore ,会自动弹出 windows wsl 的应用商店,如下图:
如上图所示,有很多种 Linux 系统可以安装,我们选择 Debian,这个系统跟 ubuntu 比较像。
安装完成之后,点击打开,如下:
然后需要配置一下用户名密码之类的,我的用户名密码都是 debian,配置完成之后如下:
从上图可以看到,cl.exe 可以直接调用。
WSL 里面虽然是 Debian 的系统,但是是可以调 vs2019 的 cl.exe 的,也就是能用 MSVC 的方式编译 FFmpeg。
至此,Debian WSL 环境已经安装完毕。这里提个小技巧,这个 Debian 的命令行关闭之后,下次想再次进入 Debian WSL,在 搜索框搜索 Debian 即可,
或者 可以 CMD 命令行输入 wsl.exe 如下图:
从 CMD 进去 Debian WSL 系统,可以发现 我原来 Windows10 的路径已经被挂载在 /mnt/c/Users/loken
,这样 Windows10 跟 Debian 基本是共享文件夹了,所以可以很方便把 FFmpeg4.4 的源码拷贝到 Debian。
先下载 FFmpeg4.4 源码,然后执行以下命令拷贝到 /home/debian/ffmpeg
。
sudo apt-get update
cd /home/debian
mkdir ffmpeg
cd /home/debian/ffmpeg
cp /mnt/c/msys64/home/loken/ffmpeg/FFmpeg-n4.4.1.zip ./
unzip FFmpeg-n4.4.1.zip
解压后如下:
再执行以下命令,安装一些必要的编译软件:
sudo apt-get install -y diffutils make pkg-config yasm
进入 FFmpeg 源码目录,正式开始编译,如下:
cd /home/debian/ffmpeg/FFmpeg-n4.4.1
mkdir /home/debian/ffmpeg/build64
./configure \
--prefix=/mnt/c/msys64/home/loken/ffmpeg/build64_2 \
--enable-gpl \
--enable-nonfree \
--enable-shared \
--toolchain=msvc
make -j8
make install
执行以上命令会报错,cl.exe 提示找不到文件,这个后面解决,有机会在完善这篇文章。
由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1,QQ:2338195090。