Cygwin的安装与配置还是相对比较简单的一个过程。
首先需要去Cygwin官网下载安装包,根据自己电脑系统选择32位还是64位。
我这里以64位为例,setup-x86_64.exe,双击下载好的安装包,如下图所示:
三种安装模式:
①Install from Internet,这种模式直接从Internet安装,适合网速较快的情况;
②Download Without Installing,这种模式只从网上下载Cygwin的组件包,但不安装;
③Install from Local Directory,这种模式与上面第二种模式对应,当你的Cygwin组件包已经下载到本地,则可以使用此模式从本地安装Cygwin;
设置Root路径,我这里放在E:/FFmpeg/cygwin64目录下。
设置组件包路径,我这里放在E:/FFmpeg/Local目录下。
这一步是选择连接的方式,选择你的连接方式,然后点击下一步。
①Use System Proxy Settings 使用系统的代理设置;
②Direct Connection 一般多数用户都是这种直接连接的网络,所以都是直接使用默认设置即可;
③Use HTTP/FTP Proxy 使用HTTP或FTP类型的代理。如果有需要,自己选择此项后,设置对应的代理地址和端口,即可;
选择下载站点:
不同的镜像存放了不同的包,为了获得最快的下载速度,可以添加网易开源镜像http://mirrors.163.com/cygwin/ 或者 阿里云镜像http://mirrors.aliyun.com/cygwin/。
选择需要下载安装的组件包:
此处,对于安装Cygwin来说,就是安装各种各样的模块而已。最核心的,记住一定要安装Devel这个部分的模块,其中包含了各种开发所用到的工具或模块。
如果是编译FFmpeg的话主要下载以下几个组件包:
01. gcc
02. g++
03. make
04. cmake
05. automake
06. gdb
07. nasm
08. yasm
09. wget
10. git
11. tar
12. bzip2
13. gawk
确认改变,进行安装。
安装完成,创建桌面快捷方式。
到这儿基本上Cygwin算是完全安装完成了,可以通过以下方式进行验证是否完成安装。
找到安装目录下Cygwin.bat文件,即E:\FFmpeg\cygwin64\Cygwin.bat。或者找到桌面上Cygwin的快捷方式,点击运行,输入一下内容:
cygcheck -c cygwin
Enter键运行:
验证gcc组件是否安装成功:
验证g++组件是否安装成功:
最后分享一下这几个安装包的地址(如果你嫌弃官网下载太慢的话):
链接: https://pan.baidu.com/s/17BrGFAjjEz_EJ5c6Q8arcQ 提取码: h1jq
在编译FFmpeg之前,也有人推荐安装apt-cyg。
虽然我们上面安装好了 Cygwin,但还是很不方便,为什么呢?主要是因为 Cygwin目前设计的还不是很人性化。如果我们安装好Cygwin后,如果缺少了某个包想安装的话就特别麻烦。还需要重新安装 Cygwin才能解决,为了更加方便解决这一问题,所以推荐apt-cyg。
apt-cyg是一个很好用的开源工具。它与 Ubuntu系统中的 apt一样特别好用,而且使用的方式与 apt也是一个样子的。
apt-cyg就是一个脚本。我们只需要将这个脚本下载下来就OK了。可以通过wget来完成,执行命令如下:
wget -c https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
当然如果你已经将apt-cyg下载到本地,则可以直接执行install apt-cyg /bin命令。例如:我已经将apt-cyg下载到E:\FFmpeg目录下载,执行如下图所示。
也可以去配置apt-cyg的镜像源:
apt-cyg mirror http://mirrors.163.com/cygwin
以及更新源:
apt-cyg update
在Windows系统下,一般不会默认安装该工具,所以在Windows下做实验的同学大都会遇到明明已经装了某个库,但仍然找不到该库的情况。其原因就是没有安装 pkg-config
这个工具。
首先确认是否已经将 pkg-config
工具安装好了。可以执行下面的命令:
pkg-config
如果提示没有安装,则先将该工具安装好,安装命令如下:
apt-cyg install pkg-config
下面再介绍几个常常与FFmpeg一起使用的组件。
很简单,运行Cygwin,依次执行如下命令即可:
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install
fdk-aac是用来处理音频AAC的一个开源库。
同样,运行Cygwin,依次执行如下命令即可:
wget https://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.6.tar.gz
tar xvf fdk-aac-0.1.6.tar.gz
cd fdk-aac-0.1.6
./configure
make
make install
lame是用来处理音频mp3的一个开源库。
同样,运行Cygwin,依次执行如下命令即可:
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -xzf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make
make install
安装lame-3.99.5可能会报一些错误,如下:
问题一:
在Cygwin下安装 lame的时候遇到执行 ./configure 失败的情况。如 "error: cannot guess build type; you must sepcify one",对这个问题可以通过下面的步骤来解决:
解决办法:
确认automake当前版本。可执行automake --version获取当前automake的版本号。
将 lame目录下的 config.guess文件替换为 /usr/share/automake-version下的config.guess 文件。
此时,再执行./configure进就可以下成功了。
问题二:
make时出现 "error: '_O_BINARY' undeclared (first use in this function)"的错误,解决办法如下:
打开出错文件 vi ./frontend/lametime.c
解决办法:
将下面这段代码注释掉
/*
#elif defined __CYGWIN
setmod(fileno(fp), _O_BINARY);
*/
再执行make就可以成功了。
当然对于lame也可以选择其他版本,例如3.100版:
wget http://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar -xzf lame-3.100.tar.gz
cd lame-3.100
./configure
make && make install
如果不安装nasm,后面使用到的x264有可能无法正常安装。
NASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性。
同样,运行Cygwin,依次执行如下命令即可:
wget https://www.nasm.us/pub/nasm/releasebuilds/2.15.03/nasm-2.15.03.tar.gz
tar xvf nasm-2.15.03.tar.gz
cd nasm-2.15.03
./configure
make
make install
或者使用nasm-2.13.03版本:
wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz
tar xvf nasm-2.13.03.tar.gz
cd nasm-2.13.03
./configure
make && make install
x264是用来处理视频H.264的一个开源库。
同样,运行Cygwin,依次执行如下命令即可:
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
bunzip2 x264-master.tar.bz2
tar -vxf x264-master.tar
cd x264-master
./configure --enable-static --enable-shared --disable-asm --disable-avs
make
make install
最后到本文的重头戏FFmpeg,它的安装也非常简单,运行Cygwin,依次执行如下命令即可:
wget -c https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
bunzip2 ffmpeg-4.0.2.tar.bz2
tar -vxf ffmpeg-4.0.2.tar
cd ffmpeg-4.0.2
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-small --arch=x86_64 --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-filter=delogo --enable-debug --disable-optimizations --enable-shared
make
make install
但是FFmpeg在编译过程中,可能存在一些问题,如NOT FOUND fdk-aac,即找不到fdk-aac库。
解决办法:
此时我们应该设置一下 PKG_CONFIG_PATH,指定ffmpeg到哪里找我们安装好的库。
上面通过源码安装的库,默认地址为/usr/local/lib下面,当然你可以通过./configure 中的–prefix参数改变这个目录。
如果使用默认路径的话,可以通过下面的命令来指定编译时去哪里找库
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
如果你改变了默认路径,则将后面的 /usr/local/lib/pkgconfig修改为你变更后的路径/xxx/…/lib/pkgconfig即可。
这样就完成了FFmpeg的编译,并且将一些开源库插入FFmpeg中。
这时候双击ffmpeg.exe或者ffprobe.exe的时候可能会报出,一些dll文件找不到的错误,如下图:
对于这种错误处理其实也很简单,只需要在Cygwin\bin目录下,找到cygwin1.dll文件,放入电脑Windows目录下即可。如果遇到其他类似问题也同样以这种方式进行解决。
最后就是使用,有两个方式:第一种配置环境变量。第二种是直接切换到可执行目录,执行相关命令,如: