致读者:本次编译过程并不是想象的很麻烦,我也是查阅了很多博客,最后编译成功,其实只要按照步骤走,一定能成功。
编译环境搭建:
下载MSYS url:https://www.msys2.org/
打开下载的软件,安装完成后打开界面如下
安装mingw编译器及环境。
我这里参考的是这一篇博客https://www.cnblogs.com/kumukim/p/11006647.html非常好。这里按照步骤来
先切换源这一步很重要,涉及到速度,按照步骤来
参考这个博客,https://blog.csdn.net/jinlong0603/article/details/88423061
最近一段时间不知怎么的,使用默认的 MSYS2 源升级软件或是安装新软件的特别的慢。所以就翻了翻国内的几个开源软件的镜像库,发现中科大的库里就有 MSYS2。所以就研究了一下,给 MSYS2 添加了中科大的源。
简单的说 msys64\etc\pacman.d 目录下有三个文件。
mirrorlist.msys
mirrorlist.mingw64
mirrorlist.mingw32
这三个文件记录了都有哪些源。下面把我添加之后的文件内容贴上来。
首先是 mirrorlist.msys:
##
## MSYS2 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/
mirrorlist.mingw64:
##
## 64-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
Server = http://repo.msys2.org/mingw/x86_64
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
Server = http://www2.futureware.at/~nickoe/msys2-mirror/x86_64/
Server = http://mirror.bit.edu.cn/msys2/REPOS/
mirrorlist.mingw32:
##
## 32-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
Server = http://repo.msys2.org/mingw/i686
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/
最好需要执行
pacman -Syu 更新
安装各种安装包
使用msys2 安装目录的 mingw64.exepacman -Syu
exit //这句是为了让mingw64.exe关机。手动重启mingw64.exe
重新之后可能需要再次执行第二步换源。
pacman -Su
pacman -S gcc
pacman -S mingw-w64-x86_64-toolchain
pacman -S base-devel
pacman -S yasm
如果需要编译出ffplayer的话,还需要安装SDL
pacman -S mingw-w64-x86_64-SDL2
下边这几个或许要装,没对比过
pacman -S mingw-w64-x86_64-SDL2_gfx mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_net mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-SDL_gfx
目前来说能装的都装上,有问题在百度。
到此为止编译的环境是搭建完毕了,下面是下载ffmpeg
进入到ffmpeg的官网http://ffmpeg.org/往下拉
看着这个的时候随便下一个就行。
然后是其他的模块,这里参考的是这个博客https://www.cnblogs.com/zjoch/archive/2013/05/14/3077953.html
必须下载:
1、下载 yasm(汇编编译器)
ffmpeg编译的时候里面的汇编代码需要yasm.exe
去官网:http://yasm.tortall.net/Download.html 下载
选择下载
下载 mp3lame(支持mp3,可选项)
为了让编译出来的ffmpeg支持对mp3格式的编解码,您需要先下载lame。
到:http://sourceforge.net/projects/lame/files/ 下载
文件名类似为:lame-3.99.2.tar.gz 的包。
下载 x264(支持x264,可选项)
为了让编译出来的ffmpeg支持对x264格式的编解码,您需要先下载x264。
到:http://www.videolan.org/developers/x264.html下载
文件名类似为:last_x264.tar.bz2 的包。
下载 Xvid(支持Xvid,可选项)
为了让编译出来的ffmpeg支持对Xvid格式的编解码,您需要先下载Xvid。
到:http://www.xvid.org/ 下载
文件名类似为:xvidcore-1.3.2.tar.gz 的包。
下载 faad2(支持faad,可选项)
到:http://www.audiocoding.com/downloads.html 下载:Version 2.7 bootstrapped TAR.GZ Package
文件名类似为:faad2-2.7.tar.gz 的包。
下载 faac(支持faac,可选项)
到:http://www.audiocoding.com/downloads.html 下载:Version 1.28 bootstrapped TAR.GZ Package
文件名类似为:faac-1.28.tar.gz 的包。
下载 aacenc(支持aac,可选项)
到:http://sourceforge.net/projects/opencore-amr/files/ 下载:vo-aacenc
文件名类似为:vo-aacenc-0.1.1.tar.gz 的包。
下载 amr-nb与amr-wb (早期ffmpeg支持3gp,可选项)
到:http://www.penguin.cz/%7Eutx/amr 下载:amrnb-7.0.0.2.tar.bz2与amrwb-7.0.0.4.tar.bz2
文件名类似为:amrnb-7.0.0.2.tar.tar 与amrwb-7.0.0.4.tar.tar 的包。
下载 opencore-amr与vo-amrwbenc (支持3gp,可选项)
到:http://sourceforge.net/projects/opencore-amr/files/ 下载:opencore-amr 与 vo-amrwbenc
文件名类似为:opencore-amr-0.1.2.tar.gz 与vo-amrwbenc-0.1.1.tar.gz 的包。
感谢大佬整理!!!!!!!!!!!!!!!!!!!!!!!!
关键的编译步骤
把解压的ffmpeg放到home下。
cd到目录下:
$ ./configure --enable-shared --disable-static --enable-ffplay
--enable-nonfree --enable-memalign-hack
--enable-libmp3lame
--enable-gpl--enable-libx264
--enable-libxvid
--enable-faad --enable-libfaac
--enable-libvo-aacenc
--enable-version3 --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libvo-amrwbenc
--extra-cflags=-Id:/ffmpeg/ffmpeg-0.8.6/include
--extra-ldflags=-Ld:/ffmpeg/ffmpeg-0.8.6/lib
关于configure,的配置点,我这里不是很懂,有模块就加模块,没模块就直接写个下面的就行,请大佬指点
./configure --enable-shared --disable-static --enable-ffplay
下面直接make就行 这里加j8加快编译速度
make -j8
等待编译完成后在msys64\usr\local这个目录下有 include, lib, bin 文件夹,到此编译完成。
这里在编译的时候出现
WEOF问题:
/usr/include/w32api/strsafe.h:1859:11: 错误: ** ‘WEOF’** undeclared (first use in this function); did you mean ‘EOF’?
这次参考博客https://blog.csdn.net/asdasfdgdhh/article/details/111518788
解决了问题。