win7 X64 编译ffmpeg
由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,
因此它不能使用MSVC++编译。要想使用FFMpeg,最先要解决的问题就是在Windows下配置一个类似Linux的编译环境,
将FFMpeg编译为二进制库以后,再利用其进行进一步开发。MSVC++并不严格的遵循C标准,所以整个编译过程必须使用MSys+MinGW系统来完成。
如果选择编译动态链接库(dll),这些库将和其他的动态链接库一样在使用上没什么差别,可以使用MSVC++来链接这些库到自己的程序,只有这种情况下MSVC++是被支持的。
一、编译过程
1、准备MSys+MinGW系统
下载整合版 Download mingw-get-setup.exe (86.5 kB)
之前编译c++ 时用过,http://blog.csdn.net/kuaile123/article/details/11024873
不多说了,安装目录里 C:\MinGW\msys\1.0 就是 MSys
2、修改“msys.bat”
用文本编辑器(如NotePad++)打开C:\MinGW\msys\1.0\msys.bat,由于打算用MSVC++编译程序,所以需要有.lib文件才能链接到FFmpeg的库,这些.lib文件可以使用微软的工具链中lib命令产生。把下面一行加到msys.bat的最前面,把路径替换成机器上vcvars32.bat实际存在的路径,比如我的在“D:\Program Files\Microsoft Visual Studio2010\VC\bin”,于是就添加:
call "D:\Program Files\Microsoft Visual Studio2010\VC\bin\vcvars32.bat"
3、下载ffmpeg源码
由于ffmpeg的源代码存放在SVN仓库里,所以必须使用命令行程序或是图形界面程序来访问。
首先下载TortoiseSVN,安装完成后,在想要存放ffmpeg下邮件,选择check out,输入地址svn://svn.mplayerhq.hu/ffmpeg/trunk
点击开始,开始下载,如下图所示:我下载的版本40多M,网速不好的时候下载很容易中断。
4、编译
首先运行msys.bat,进入shell界面
转到ffmpeg所在目录: cd D:/ffmpeg
注意:目录名使用正斜杠来分割,而不是Windows所使用的反斜杠(比如说要写成"D:/ffmpeg"而不是"D:\ffmpeg")。
文件名或目录名中如果带有空格,必须用双引号括起(例如这样"/C/Program Files",带有双引号)。
不然会提示没有此目录
盘符(例如"C:\")可以从根目录处访问(像这样"/C/")。
(1) 编译静态库
(1.1)配置:
./configure --enable-static --enable-memalign-hack --prefix=C:/MinGW/msys/1.0 --extra-cflags="-fno-common"
注意执行这句话时出现的问题,yasm是汇编编译器,因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE。
这个过程要花费较长的时间,开始会有较长的时间没有反应。其中的prefix是msys的安装路径
如果出现提示: yasm not found, use --disable-yasm for a crippled build
解决方法(a)在网上下载一个yasm.exe并安装在mingw/bin下面,编译代码时你注意看,会发现asm后缀的文件用的编译器是yasm,c文件用的是gcc;
下载地址 http://yasm.tortall.net/Download.html 注意把下载下来的改名为 yasm.exe ,不然还是提示找不到。由于mingw为32位版本,最好下32位,以后后面有问题。
(b)不使用汇编指令,在配置时加上,即./configure --disable-yasm
(1.2)编译:make
(1.3)安装: make install
安装只是把要开发使用的库文件拷贝到c:/msys/1.0/lib/目录中,头文件拷贝到c:/msys/1.0/include/目录中。产生的库文件为.a文件
(2)编译动态库
如果希望使用FFmpeg包含的libavcodec库开发多媒体文件处理程序,还需要编译libavcodec的dll动态链接库。
(2.1)配置:
./configure --enable-shared --disable-static --enable-memalign-hack --prefix=C:/MinGW/msys/1.0 --extra-cflags="-fno-common"
(2.2)编译:
make
注意:当运行到make这一步时出现问题:
c:\mingw\include\io.h: error : unknown typename 'off64_t'
make: ***[libavformat/applehttp.o] error1
发现在io.h中已经
/* MSVC's io.h contains the stuff from dir.h, so I will too.
* NOTE: This also defines off_t, the file offset type, through
* an inclusion of sys/types.h */
#include <sys/types.h> /* To get time_t. */
在sys/types.h 文件中有如下一段:
#ifndef _OFF64_T_
#define _OFF64_T_
typedef __int64 _off64_t;
#ifndef __STRICT_ANSI__
typedef __int64 off64_t;
#endif /* __STRICT_ANSI__ */
#endif /* ndef _OFF64_T */
已经定义了off64_t,特别奇怪,不知道为啥没法识别。
不管我是加了 #undef _OFF64_T_ 还是 将周围的变量注释掉 只保留 typedef __int64 _off64_t; typedef __int64 off64_t;
都会出现更多的错,我以为是64位系统的原因,但是我又在32位电脑上进行编译,同样的问题,不知道这是什么原因。在网上查也没有人有这种问题,太奇怪了。
参考博客: http://blog.csdn.net/dragon101788/article/details/8679092
win7 X64 编译ffmpeg相关推荐
- Windows 7(Win7)下MinGW+msys编译ffmpeg,并加入H264编码支持
可以去ffmpeg官网下载已经编译好的版本:https://ffmpeg.zeranoe.com/builds/ 该编译好的版本支持H264编码和解码 如果需要自己编译,步骤如下: 1.下载安装MSY ...
- VS2015编译ffmpeg 3.4.2
https://blog.csdn.net/bobsweetie/article/details/50858358 https://blog.csdn.net/csdnwei/article/deta ...
- 在Windows下编译ffmpeg完全手册
本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...
- qt学习之旅--MinGW编译FFmpeg(32bit)
0.前言 本来想说FFmpeg使用现成的动态库,结果发现FFmpeg已经没有32位的了,然而我的QT使用的还是MinGW32位的,没办法,只能自己编译生成32位动态库. 参考博客:ffmpeg 2.6 ...
- MinGW32编译ffmpeg+libsrt
MinGW编译带srt库的ffmpeg 前言 MinGW安装 CMAKE安装 Visual Studio 2017安装 支持windows的线程库 SRT库的编译 openssl的安装 SRT编译 M ...
- FFmpeg - Windows下使用MSYS2和VS编译FFmpeg
文章目录 0. 说明 1. 安装MSYS2 1.1 下载 1.2 安装 2. 下载FFmpeg及其他源码 3. 编译配置依赖库 3.1 打开一个新的MSYS2终端 3.2 编译x264 3.3 编译 ...
- WINDOWS 下编译 ffmpeg 源码总结
WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译: https://github.com/ShiftMediaProject/FFVS-Project-Gene ...
- Win7 x64下内核池溢出覆盖配额进程指针(Quota Process Pointer Overwrite)
0x0 简介 在 Win7 x64位下,内核池的头部结构如下: nt!_POOL_HEADER+0x000 PreviousSize : Pos 0, 8 Bits // 前一个内核堆块大小除以0x1 ...
- win7下编译python源码
win7下编译python源码 下载源码: 打开网页:https://www.python.org/downloads/release/python-2710/ 下载完成后解压即可 查看文档: 其实最 ...
最新文章
- ICCV 2021 Best Paper | Swin Transformer何以屠榜各大CV任务!
- 盘点那些你可能错过的CNCF优秀开源项目
- apache目录 vscode_[PHP] php, apache, VS Code安装与配置
- 微信小程序支付,带java源码
- ubuntu16.04安装CecureCRT 并破解
- leetcode 279 四平方定理
- 解读边缘计算在7大领域的研究趋势和最新进展
- linux下的C语言开发(ATT 汇编语言)
- ACCESS中通过邮件收集数据
- python爬取统计局数据_利用Python抓取行政区划码的方法
- 真实面试经历:十面阿里,七面头条,六个Offer
- lync前段服务器证书安装,Lync Server 2013企业版部署测试六:前端服务器安装Lync Server系统...
- linux编译lame,lame mp3 源码 分析
- java设计模式之【工厂模式】
- 上汽通用凯迪拉克汽车的多媒体系统不能识别u盘的解决方法
- C/C++智能指针详解
- 聊天机器人之语音识别科大讯飞 Node.js SDK
- 解决印象笔记无法搜索到对应标题或内容笔记的问题
- SSL数字证书下载流程是怎么样的
- java编一个漏斗_java – 漏斗分析计算,你如何计算漏斗?
热门文章
- A folder failed to be moved——Android SDK的安装问题解决方案
- docker for windows could not read CA certificate【转】
- 7 Java Performance Metrics to Watch After a Major Release--转
- haproxy 学习记录
- iOS开发系列-线程同步dispatch_barrier_async
- Lesson 16.3 卷积操作
- jQuery快速学习
- 如何构建 FinTech 科学反欺诈体系|架构师实践日
- 不要将时间浪费到编写完美代码上
- Docker Review - Docker 概念 入门篇