在安装好的opencv文件夹下找到路径:opencv245\opencv\3rdparty\ffmpeg,此路径下有一个readme.txt文件,内容例如以下所看到的:

The build script is to be fixed.
Right now it assumes that 32-bit MinGW is in the system path and
64-bit mingw is installed to c:\Apps\MinGW64.

It is important that gcc is used, not g++!
Otherwise the produced DLL will likely be dependent on libgcc_s_dw2-1.dll or similar DLL.
While we want to make the DLLs with minimum dependencies: Win32 libraries + msvcrt.dll.

ffopencv.c is really a C++ source, hence -x c++ is used.

How to update opencv_ffmpeg.dll and opencv_ffmpeg_64.dll when a new version of FFMPEG is release?

1. Install 32-bit MinGW + MSYS from
   http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/
   Let's assume, it's installed in C:\MSYS32.
2. Install 64-bit MinGW. http://mingw-w64.sourceforge.net/
   Let's assume, it's installed in C:\MSYS64
3. Copy C:\MSYS32\msys to C:\MSYS64\msys. Edit C:\MSYS64\msys\etc\fstab, change C:\MSYS32 to C:\MSYS64.
   
4. Now you have working MSYS32 and MSYS64 environments.
   Launch, one by one, C:\MSYS32\msys\msys.bat and C:\MSYS64\msys\msys.bat to create your home directories.

4. Download ffmpeg-x.y.z.tar.gz (where x.y.z denotes the actual ffmpeg version).
   Copy it to C:\MSYS{32|64}\msys\home\<loginname> directory.

5. To build 32-bit ffmpeg libraries, run C:\MSYS32\msys\msys.bat and type the following commands:

5.1. tar -xzf ffmpeg-x.y.z.tar.gz
   5.2. mkdir build
   5.3. cd build
   5.4. ../ffmpeg-x.y.z/configure --enable-w32threads
   5.5. make
   5.6. make install
   5.7. cd /local/lib
   5.8. strip -g *.a

6. Then repeat the same for 64-bit case. The output libs: libavcodec.a etc. need to be renamed to libavcodec64.a etc.

7. Then, copy all those libs to <opencv>\3rdparty\lib\, copy the headers to <opencv>\3rdparty\include\ffmpeg_.

8. Then, go to <opencv>\3rdparty\ffmpeg, edit make.bat
   (change paths to the actual paths to your msys32 and msys64 distributions) and then run make.bat

在使用minGW32编译ffmpeg过程中。遇到了下面几个问题:

1、 在输入命令5.4后,出现了提示”yasm is old ...",提示输入“--disable-yasm”

事实上是又一次输入../ffmpeg-x.y.z/configure --enable-w32threads --disable-yasm。

2、 5.5和5.6的运行过程较长,请耐心等待。

3、 5.7 strip -g *.a 的意思是跳过debug编译,编译生成release版本号。

4、 第7步中的编译好的lib和头文件,事实上是存放在 local 文件夹下(存放release版本号)。

開始没注意到。我一个个搜索,复制粘贴过去的,这些是我从"C:\MSYS32\msys\1.0\home\Administrator\bulid" 文件夹下搜索的,而这边生成的.a库版本号是debug版本号的。

5、 第8步中改动msys32的路径就可以,就能够执行make.dat文件。

或者是在命令行中,转到”opencv\3rdparty\ffmpeg"这个文件夹下,从gcc处開始” gcc -Wall -shared -o opencv_ffmpeg.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat -lavcodec -lavdevice -lswscale -lavutil -lwsock32“   输入以上语句。执行后会出现

” libiconv“的相关错误提示;

解决方法:在C:\MSYS32 文件夹下找到libiconv.a文件拷贝到 " opencv\3rdparty\ffmpeg\lib" 文件夹下。

在执行命令时,在后加 -liconv 执行就可以生成文件 opencv_ffmpeg.dll。

6、 ffmpeg-x.y.z.tar.gz的下载地址为:http://www.ffmpeg.org/download.html,在该页面中选择最新版本号的Download gzip tarball 这一项下载。

7、在命令行中书写路径中,不能用"\", 而用"/"。

8、加yasm编译:

在1的处理过程中,没有使用yasm这样的汇编器。这使得在使用编译生成的opencv_ffmpeg.dll时。文件编解码的速度较慢。网上查到说,假设不用yasm编译的话。速度的确是会变慢的。所以第二次尝试使用yasm编码。

处理方法:首先下载yasm的win32版本号的文件,将文件名称改为yasm.exe。放入C:\MSYS32\bin 文件夹下。运行5.4的原命令。

运行到 5.8. strip -g *.a 时。出现了下面提示:

为了解决问题,又一次下载了strip.exe文件,并覆盖到相应的文件夹下。

又一次执行该命令,假设本机没有安装cygwin的话,会提示缺少cygwin1.dll。所以还需下载安装cygwin程序,再加入其bin地址到系统环境变量中。再又一次执行5.8命令,就OK了。

如需转载,请注明文章出处:http://blog.csdn.net/wsbeibei

用minGW编译ffmpeg(供替换opencv中引用的ffmpeg库)相关推荐

  1. [转]在VS2010 VC++项目中引用Lib静态库(以Openssl为例)

    本文转自:http://kb.cnblogs.com/page/94467/ Openssl是个为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SS ...

  2. html5调用静态库,如何在VS2010项目中引用Lib静态库(以Openssl为例)

    Openssl是个为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用. 首先下载Openssl包 ...

  3. 如何在HTML中引用jQuery函数库

    要使用jQuery,我们要知道,jQuery是一个函数库,简单来讲就是一个后缀名为".js"的文件.我们可以在这里找到jQuery的最新版本文件:http://jquery.com ...

  4. 微信开发工具及Hbuilder中引用阿里巴巴矢量库(步骤一样)

    第一步:创建一个阿里巴巴矢量库项目,将图标加入项目中,并生成一个在线的css文件 第二步:在微信开发者工具中新建一个.wxss文件,把第一步中的复制好的代码粘贴到这个文件中,如果将来有新的图标放置项目 ...

  5. python中的turtle库中引用_python turtle库学习笔记

    1.turtle库是python语言中一个很流行的绘制图像的函数库 想象一只小乌龟,在一个横轴为x,纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它 ...

  6. 微信小程序中引用vant组件库

    步骤 1.vant组件库里面也有说明,它说package.json 和 node_modulles 必须在miniprogram目录下,可是一般你刚新建一个小程序项目的时候,是没有package.js ...

  7. windows下MinGW编译openssl库(64位、32位)图文解析

    环境:windows10 64位 工具链:MinGW64 IDE:CLion MinGW编译openssl 有两种方式获取到动态库: 一种是自己编译,编译源码 一种是在msys下安装openssl库的 ...

  8. Windows下使用MingW编译Jsoncpp链接库

    文章目录 说明 1.下载源码 2. 生成Makefile 3. 编译与安装 4. 测试 说明 之前在 Linx 系统里用 JsonCpp ,记录了安装使用过程. CentOS下Jsoncpp安装配置 ...

  9. 学习OpenCV3:Cmake+MinGW编译OpenCV

    1. 准备 1.1 下载OpenCV源码 OpenCV下载地址1:https://opencv.org/releases/ OpenCV下载地址2:https://github.com/opencv/ ...

最新文章

  1. 关于域的的一些遐想(一)
  2. opentracing
  3. 文件上传与下载问题记录
  4. Centos7.0上搭建LAMP平台安装discuz后无法访问
  5. Nginx-1.9.8推出的切片模块
  6. 服务器500g硬盘分区方案,win7500g硬盘分区方案
  7. poj 1723 中位数
  8. Python并发编程之多进程(实战)
  9. Mysql中eft join、right join、inner join的区别
  10. Linux系统下查看网卡的UUID
  11. 重装系统后管家婆数据库丢失,数据库碎片扫描、提取、重组数据恢复
  12. 计算机学院陈冠华,生命科学学院2020年研究生学业奖学金(老生)获奖名单公示...
  13. 使用WireShark了解浏览器访问网络的整个过程
  14. iOS短视频:基于GPUIMage的短视频录制(GPUImage自定义相机)
  15. pandas模块DataFrame数据结构行数据的获取
  16. Excel·VBA按行拆分工作表
  17. 【brainfuck】brainfuck在线编解码工具
  18. JuiceFS 在理想汽车的使用和展望
  19. Stream流:基本API操作详细笔记
  20. post上传图片获取不到值

热门文章

  1. Boost:以协程的方式实现带有单个默认值的echo服务器的实例
  2. ITK:创建具有相关类ID的样本列表
  3. VTK:PolyData之DataSetSurfaceFilter
  4. VTK:绘图之FunctionalBagPlot
  5. VTK:图表之TreeToMutableDirectedGraph
  6. VTK:图表之GraphToPolyData
  7. OpenCV自动跟踪移动目标DaSiamRPN的实例(附完整代码)
  8. QT的QNetworkProxy类的使用
  9. QT的QGLFormat类的使用
  10. C++11右值引用和移动构造函数