MSYS2+mingw 编译 ffmpeg 在windows下完整过程

致读者:本次编译过程并不是想象的很麻烦,我也是查阅了很多博客,最后编译成功,其实只要按照步骤走,一定能成功。

编译环境搭建:

第一步:

下载MSYS url:https://www.msys2.org/ 

第二步:

打开下载的软件,安装完成后打开界面如下

MSYS2+mingw 编译 ffmpeg 在windows下完整过程_第1张图片

MSYS2+mingw 编译 ffmpeg 在windows下完整过程_第2张图片

第三步:

安装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/往下拉

MSYS2+mingw 编译 ffmpeg 在windows下完整过程_第3张图片

看着这个的时候随便下一个就行。

然后是其他的模块,这里参考的是这个博客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

解决了问题。

 

 

 

你可能感兴趣的:(c++,opencv,ffmpeg,windows,编译器)