多年前在https://blog.csdn.net/fengbingchun/article/details/40951403 中对FFmpeg在windows下的编译过程做过说明,那时FFmpeg版本用的2.4.3, VS是2010,现在FFmpeg最新稳定版为4.1.3,通过VS2013进行编译,较之前有了些不同,这里再次介绍下:

一、编译x86库:

1. 从https://osdn.net/projects/mingw/releases/ 下载mingw-get-setup.exe,更新日期为2017年9月6日;点击右键以管理员身份安装到C:/MinGW,安装的Package有mingw-developer-toolkit-bin, mingw32-base-bin, mingw32-gcc-g++-bin, msys-base-bin;

2. 从http://yasm.tortall.net/Download.html 下载yasm-1.3.0-win64.exe,注意一定不要下载vsyasm-1.3.0-win64.zip,否则后面make的时候会有error,并拷贝到C:\MinGW\msys\1.0\bin并重命名为yasm.exe;

3. 下载pkg-config,处理” WARNING: pkg-config not found, library detection may fail.”,从http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/ 下载pkg-config_0.26-1_win32.zip,解压缩并将pkg-config.exe拷贝到C:\MinGW\bin目录下;从http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/ 下载pkg-config的依赖库glib_2.28.8-1_win32.zip,解压缩并将libglib-2.0-0.dll拷贝到C:\MinGW\bin目录下;从http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/ 下载gettext-runtime_0.18.1.1-2_win32.zip,解压缩并将intl.dll拷贝到C:\MinGW\bin目录下;注意:此步可省略;

4. 将目录C:\MinGW\bin和C:\MinGW\msys\1.0\bin添加到系统环境变量PATH中;

5. 将C:\MinGW\msys\1.0下的msys.bat复制一份并改名为msys_vs2013.bat,并在msys_vs2013.bat的开头加上一句” call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"”;

6. 重命名C:\MinGW\msys\1.0\bin下的link.exe为link_msys.exe,这是为了防止此link.exe与vs2013中的link.exe发生冲突,编译完FFmpeg后可再次修改回来;

7. 从https://github.com/FFmpeg/FFmpeg/releases  下载FFmpeg-n4.1.3.zip并解压缩到E:\FFmpeg-n4.1.3;

8. Fix error C2440: libavcodec/dxva2.c<524>, “初始化”:无法从”GUID”转换为”unsigned long”:将libavcodec/dxva2.c的第519行由.DecodeProfile = decoder_guid,调整为.DecodeProfile = decoder_guid.Data1,;

9. 双击运行msys_vs2013.bat,使用cd命令将其定位到E:\FFmpeg-n4.1.3\build_x86_release目录下,此build_x86_release目录需要自己手动创建,执行如下命令:

.././configure --prefix=./install --toolchain=msvc
make -j4
make install

二、编译x86_64位库:

1. 如果还没有配置好环境,则需先按照上面编译x86库中的步骤1,2,3,4,6,7,8操作一遍;

2. 将以上第5步中的” call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"”调整为” call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat"”

3. 双击运行msys_vs2013.bat,使用cd命令将其定位到E:\FFmpeg-n4.1.3\build_x86_64_release目录下,此build_x86_64_release目录需要自己手动创建,执行如下命令:

.././configure --prefix=./install --target-os=win64 --arch=x86_64 --toolchain=msvc
make -j4
make install

执行完make install后install目录下会产生4个目录,分别为:bin、include、lib、share:

1. bin目录下有ffmpeg.exe和ffprobe.exe两个文件,通过命令提示符执行:ffmpeg.exe --help结果如下:

2. lib目录下有libavcodec.a, libavdevice.a, libavfilter.a, libavformat.a, libavutil.a, libswresample.a, libswscale.a七个静态库;

3. include目录下包含了对应上面七个静态库的头文件;

4. share目录下有一些samples。

三、说明:

1. configure文件中的编译选项较多,可通过执行:$ .././configure --help > help.txt 来查看编译选项说明;

2. 默认编译的是静态库,若编译动态库,可增加编译选项参数--enable-shared --disable-static;

3. 默认编译的是release库,若编译debug库,可增加编译选项参数--enable-debug;

4. 如果不想自己通过源码编译,也可以直接从https://ffmpeg.zeranoe.com/builds/# 下载现成的库和执行文件。

GitHub: https://github.com/fengbingchun/OpenCV_Test

在Windows7/10上通过VS2013编译FFmpeg 4.1.3源码操作步骤相关推荐

  1. Ubuntu14.04上编译指定版本的protobuf源码操作步骤

    Google Protobuf的介绍可以参考 http://blog.csdn.net/fengbingchun/article/details/49977903 ,这里介绍在Ubuntu14.04上 ...

  2. 在Windows和Linux上编译gRPC源码操作步骤(C++)

    gRPC最新发布版本为v1.23.0,下面以此版本为例说明在Windows和Linux下编译过程. Windows7/10 vs2103编译gRPC源码操作步骤: 1. 需要本机已安装Git.CMak ...

  3. Windows10上使用VS2017编译MXNet源码操作步骤(C++)

    MXNet是一种开源的深度学习框架,核心代码是由C++实现.MXNet官网推荐使用VS2015或VS2017编译,因为源码中使用了一些C++14的特性,VS2013是不支持的.这里通过VS2017编译 ...

  4. 海思3559A上编译Valgrind源码操作步骤

    注:按照以下步骤可以在海思板子上正常编译valgrind源码并生成valgrind可执行文件,但可能还不能在海思板子上正常使用. 1. 从http://valgrind.org/downloads/? ...

  5. 海思3559A上编译OpenCV4.1.0源码操作步骤

    1. 从https://github.com/opencv/opencv/releases 下载opencv源码opencv-4.1.0.zip并解压缩: 2. 修改最顶层的CMakeLists.tx ...

  6. Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(Python)

    MXNet源码版本号为1.3.0,其它依赖库的版本号可参考:https://blog.csdn.net/fengbingchun/article/details/84997490 . 为了通过编译源码 ...

  7. Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(C++)

    MXNet源码版本号为1.3.0,其它依赖库的版本号可参考:https://blog.csdn.net/fengbingchun/article/details/84997490 build.sh脚本 ...

  8. Windows10上编译MXNet源码操作步骤(Python)

    1. 按照https://blog.csdn.net/fengbingchun/article/details/84997490  中操作步骤首先在Windows上通过VS2017编译MXNet源代码 ...

  9. 在Ubuntu14.04 64位上编译CMake源码操作步骤

    在Ubuntu上通过apt-get install安装CMake并不是最新版的,这里记录下在Ubuntu上通过源码安装CMake的操作步骤: 1.        卸载旧版CMake,执行以下命令: a ...

最新文章

  1. linux7安装pgsql数据库,在CentOS7系统上安装和配置PostgreSQL
  2. 05--MySQL自学教程:DDL(Data Definition Language:数据库定义语言)操作数据库中的表(二)
  3. 13_短信发送器_问题说明
  4. Matplotlib中的“ plt”和“ ax”到底是什么?
  5. 漫画:给女朋友介绍什么是 “元宇宙” ?
  6. [转]解决微信及360浏览器无法读取本地图片问题
  7. sort ascend matlab,MATLAB sort函数用法
  8. Java NIO网络编程之Selector
  9. 如何关闭OSX 10.11 SIP (System Integrity Protection)
  10. Linux IPC(Inter-Process Communication,进程间通信)之管道学习
  11. PCIe/PCI插槽不够用怎么办
  12. 国外硕博论文下载网址资源
  13. 熊啸锋:在线生成个人网站,如何建立个人网站教程
  14. 服务器虚拟化 魔力象限,Gartner:VMware成虚拟化魔力象限领导者
  15. 百度提前批-面试凉凉之-梯度下降
  16. 真相(truth)最可怕的敌人不是谎言(lie),而是神话(myth)---《唐浩明点评曾国藩家书》书评
  17. 解决Webstorm通过Chrome无法调用JB插件调试的问题
  18. 一起看看让互联网着火的“Log4j”
  19. [RK3288][Android6.0] WiFi的dts配置说明(AP6335)
  20. 人类对无穷小认识的进步

热门文章

  1. C++:名字空间的使用
  2. c++中static_cast用法与uchar/char的区别
  3. uniapp 分享缩略图过大怎么办_女性胸外扩怎么办|3步带你完成改变
  4. tftp:timeout问题解决 - 从Windows传输文件到开发板
  5. android tombstone发生过程,Android Tombstone 分析
  6. 如何理解numpy.nan_to_num
  7. Squid故障与解决方法汇总
  8. perf + 火焰图分析程序性能
  9. C++ STL: 基本六大部件概览 及 各个容器使用方式和底层实现概览
  10. 十大排序算法 导图总结