一点心青的文章指导得非常详细,本应是非常顺利的。但我仍然为编译64位ffmpeg耽误了很久,现在总结一下经验教训:

1. 经验:在编译SDL的时候,我直接使用了1.2.5的版本,省去了很多麻烦;

2. 教训:在编译ffmpeg时,我直接去原文链接的官网下载了2.6.1版本,结果总是出现下面的错误:

LD libavcodec/avcodec-56.dll

gcc.exe: error: libavcod: No such file or directory

后来才发现官网上写了这么一段话:”1.2.12 was released on 2015-02-12. It is the latest stable FFmpeg release from the 1.2 release branch“。原来1.2.12也是最新才发布的。后来用了这个版本完全没有问题了。

为了方便,我就把所有的链接放在这里了:

  (1). MSYS [点此下载]

  (2). MinGW-w64 [点此下载]

  (3). SDL [点此下载]

  (4). x264 [点此下载]

  (5). FFmpeg [点此下载]

================分割线,以下内容转载自一点心青的博客====================

【转自】http://www.cnblogs.com/dwdxdy/p/3626999.html

本文主要记录在64位Windows 7下,编译64位ffmpeg的过程。

1.资源准备

  (1). MSYS(http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/)

  (2). MinGW-w64(http://www.drangon.org/mingw/)

  (3). SDL(http://www.libsdl.org/download-1.2.php)

  (4). x264(http://www.videolan.org/developers/x264.html)

  (5). FFmpeg(http://www.ffmpeg.org/download.html)

  MinGW-w64中已经包含Yasm,因此不需要额外准备Yasm。

2.软件安装

(1). MinGW+Msys安装

  下载MSYS,解压到E:/ffmpeg64/msys目录。

  下载MinGW-w64,解到E:/ffmpeg64/msys/mingw64目录。

  启动msys.bat,打开类似于Linux的终端,并导入mingw64的环境变量。

echo 'export PATH=/mingw64/bin:.:/local/bin:/bin' > .profile
source .profile

(2). SDL安装

  下载SDL1.2.14,解压到E:/ffmpeg64/SDL-1.2.14目录。

  进入SDL-1.2.14目录,依次执行:

./configure --host=x86_64-w64-mingw32
make
make install

  编译过程中,出现如下错误:

  

  查看SDL_dx5video.c源代码,如下图所示,可以看出启用预定义NONAMELESSUNION,则会引用u1、u2的结构,出现上述错误。

  解决方法是去除预定义NONAMELESSUNION,具体代码修改参考:http://hg.libsdl.org/SDL/rev/eada7e321df6

  

  另一种简便的解决方法是更换SDL库,换成SDL-1.2.15或SDL-2.0.3。由于ffplay.c主要是利用SDL-1.2的接口实现,若使用SDL-2.0.3,则需要修改ffplay.c的源代码,因此,本文利用SDL-1.2.15重新编译,生成SDL库,安装过程和安装SDL-1.2.14一样。

  完成编译过程,但在安装(make install)出现如下错误,提示“系统找不到指定的文件”,但是/bin/install和sdl-config都是存在。

  

  查询相关资料后,发现出错的原因可能是终端在解释路径出错,如:http://mingw-users.1079350.n2.nabble.com/Problem-with-ranlib-while-running-make-install-for-SDL-td3282130.html。当MinGW+Msys和Cygmin同时存在时,会出现路径冲突的问题,在Cygmin中,根目录"/"被解释为当前目录的根目录,即”E:/",Cygmin会将"/bin/install"解释为"E:/install",因而出现“系统找不到指定的文件”的错误。

  解决方法:修改Makefile文件,重新设置install的路径。

  

(3). x264安装

  下载x264,解压到E:/ffmpeg64/x264目录下。

  进入x264目录,依次执行:

./configure --host=x86_64-w64-mingw32 --enable-shared
make
make install

(4). FFmpeg安装

  下载FFmpeg1.2,解压到E:/ffmpeg64/ffmpeg1.2

  进入ffmpeg目录,依次执行:

./configure --enable-gpl --enable-libx264 --enable-shared --enable-static --arch=x86_64 --extra-cflags='-I/local/include -I/local/cross-tools/i386-mingw32/include/SDL' --extra-ldflags='-L/local/lib -L/local/cross-tools/i386-mingw32/lib'
make
make install

  --extra-cflags用于指定头文件路径,--extrac-ldflags用于指定库文件路径。

  注意:一定要指定SDL库和x264库的头文件和库文件路径。

(5). 验证安装

  验证生成ffmpeg工具是否可执行,利用ffplay播放视频文件,查看是否可以正常播放。

  

  验证生成的动态库和可执行程序是否是64位,利用dumpbin查看动态库和可执行程序的属性信息。

  

Windows7_x64下编译64位ffmpeg相关推荐

  1. Window下编译 64位ffmpeg 引入libx264及libmp3lame编码库

    好记性不如烂笔头,每次编译总要有些时间折腾,记录下编译过程,方便后来者. 本文 介绍windows下编译64位Ffmpeg库 (版本V4.02)如何引入libx264及libmp3lame(编码mp3 ...

  2. CentOS下编译64位的libpython2.6.so.1.0库

    CentOS下编译64位的libpython2.6.so.1.0库 - Cody的专栏 - 博客频道 - CSDN.NET CentOS下编译64位的libpython2.6.so.1.0库 2011 ...

  3. gdal1.6linux编译,VS2015下编译64位GDAL总结

    使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...

  4. windows下编译64位程序时没有没_WIN32定义

    _WIN32定义的初衷是为了区分16位和32位程序,但是目前很多项目的代码都是使用_WIN32来判定是否是windows平台,所以目前在windows平台下编译32位和64位程序时,编译器都会预定义了 ...

  5. windows下编译64位x264

    一.安装MSYS2环境 1.首先去MSYS2官网(链接)安装包,我的电脑是64位选择x86_64版本 2.下载后,点击安装,默认就可以 3.根据提示,将会直接打开窗口,如果不小心关闭,则转到安装目录下 ...

  6. windows 下编译64位的 Boost 1. 61. 0

    一直以来都是在Win32环境下Build和使用boost,但现在基本上每天都在64位Win7下工作,所以很有必要把这几天的经验总结下来. 1. 下载并解压boost 1.61.0 压缩包 2. 解压并 ...

  7. linux cmake 编译64位,cmake编译win下64位obs

    obs是一款开源编码推流工具,简单易用,非常流行. 一次项目中,发现本台式机I3处理器下32位obs推流CPU使用率100%.而使用的第三方设备在64位下,性能较好. 所以需要编译64位obs并且编译 ...

  8. android 键编译,Android 音视频学习系列 (四) 一键编译 32/64 位 FFmpeg 4.2.2

    前言 2020/5/20 增加了硬件解码编译脚本 编译环境 Centos + NDK20b + FFmpeg4.2.2 + Android-21/16 2020/4/26 更新了编译 64 位脚本 编 ...

  9. Windows下VS2015 MPI编译64位Boost1.64

    Windows下VS2015编译64位Boost1.64 2017年12月08日 15:51:48 阅读数:346 参考原帖:https://gist.github.com/UnaNancyOwen/ ...

最新文章

  1. 2018 中国AI人才大调查:14张图表解读他们来自何处,又将去往何方?
  2. shell脚本的测试与判断的基础实施
  3. 【学术相关】一院士给博士生的一封信:每天工作12小时,这仅是一个下限!...
  4. TortoiseSVN2IDE.pas源代码
  5. Dev TreeList常用用法
  6. 简单直观理解形态学中的开运算和闭运算
  7. 评分卡模型开发(八)--主标尺设计及模型验证
  8. Angular 1 实现多标签页效果
  9. TN3399开发板折腾记录
  10. 共享打印机无法访问计算机,win7系统文件夹和打印机共享后无法访问的解决方法...
  11. 项目启动报错:Caused by: com.atomikos.recovery.LogException: Log already in use? tmlog in ./
  12. 简约黑板擦特效表白网源码
  13. 2013-2019年百度搜索算法规则解读与应对
  14. Jetson Nano入门教程:硬件篇+视频学习教程
  15. 计算机组成原理测试题——第5章 输入输出系统(上)(2)
  16. 08年次贷危机的微观机制
  17. 2021年JAVA面试~光头佳的论述
  18. Photoshop界面字体太小解决方案
  19. 搭建图片加密平台,扫码支付后简单获取密码
  20. 机器学习(6):聚类算法:K-MEANS算法、DBSCAN算法

热门文章

  1. 十个行为把你变成糟糕的程序员
  2. 英特尔紧急召回SB主板,Intel 6系列芯片组设计缺陷
  3. 微信小程序 时间选择
  4. html背景图片压缩显示,css背景图片在浏览器缩小时为什么下面出现了白色的
  5. ES6中新增字符串方法,字符串模板
  6. 数据库---mysql内置功能
  7. Linux Bash终端支持中文显示
  8. mysql 取某个范围内随机日期
  9. 一个SQL的几种写法
  10. WEBAPP开发技巧