原文:http://blog.csdn.net/uselym/article/details/49885867

由于VS2013支持c99了,所以,可以直接用vs2013进行ffmpeg的编译调试,而不用再用eclipse折腾了。参考别人的,记录如下:

具体步骤:

1. 下载FFMPEG源码,下载地址:http://ffmpeg.zeranoe.com/builds/ 或 http://ffmpeg.org/download.html

2. 下载MinGW安装器,下载地址:http://www.mingw.org/ 或 http://sourceforge.NET/projects/mingw/files/latest/download?source=files 下载完成后安装,安装完成后点运行,标记上以下几项:

然后在Installation菜单下点击Apply Changes(mingw32-gcc-g++不用选择);

下载msys2 http://sourceforge.net/projects/msys2/ 下载后安装到mingw/msys2/目录下

下载yasm,下载地址: http://yasm.tortall.net/ ;注意不要下载vs版的,下载64位版即可,下载后改名为yasm.exe,复制到msys2的usr/bin目录下;

4. 配置C:/MinGW/msys/1.0/msys.bat,在此文件的最前面(@echo off之后)添加一行如下内容:

(对于msys2 也是同样)

call "D:\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" (依实际安装路径修改路径);

5.重命名 C:/MinGW/msys/1.0/bin/link.exe 为link_renamed.exe (依实际安装选择路径),这一步是防止这个link.exe与vc的link.exe发生冲突,编译完成后可修改回来;(似乎不用,不过顺手将vc/bin下面link.exe lib.exe都复制过来了)

6. 配置编译,双击msys.bat,转到FFMPEG源代码根目录下,可运行 ./configure --help查看编译配置选项,我使用的选项为:

静态库:./configure --enable-static --prefix=./vs2013_build --enable-debug --toolchain=msvc
动态库:./configure --enable-shared --prefix=./vs2013_build --enable-debug --toolchain=msvc

------------------注:

默认是enable-yasm的,如果不想要汇编优化可以--disable-asm禁用所有汇编优化

对于生成release模式的库,可以--disable-debug去除debug信息

如:静态库:./configure --enable-static --prefix=./vs2013_build_release --disable-debug --toolchain=msvc--enable-memalign-hack

对于生成debug模式的库,似乎按照最上面的方式也是可以的,保险起见为了能步进到任何函数,设置如下:

./configure --enable-static --prefix=./vs2013_build_noyasm --enable-debug --toolchain=msvc --disable-yasm --disable-memalign-hack

-----------------

等待配置完成返回;

7. 输入 make all 编译;

8. 输入make install安装。

如果make有问题,对于msys2可以进入msys环境,运行pacman -S make,可参考下http://m.oschina.Net/blog/363658

完成,此时生成的头文件及库已经在ffmpeg源代码下的vs2013_build目录下.

创建一个工程ffmepg_test(静态)

在share/example中随便找一个文件,如avio_reading.c放到项目内

增加include目录与lib目录:C++->常规->附加包含目录增加include 链接器附加lib

在lib中增加:

ws2_32.lib;libavcodec.a;libavdevice.a;libavfilter.a;libavformat.a;libavutil.a;libswresample.a;libswscale.a;

-----------------------------------------------

编译时会遇到inline的错误,因为VS2013使用的是自己的_inline,解决方案:

在某个文件中  #define inline _inline

然后遇到默认库“MSVCRTD”与其他库的使用冲突等

解决方案:

属性-》C++->代码生成-》运行库修改为多线程/MT

当然,也可以debug模式选MTd  然后在linker的命令行加入如下的参数:/NODEFAULTLIB:libcmt.lib
以消除warning

遇到avcodec_alloc_frame()函数报错

解决方法为:
将 avcodec_alloc_frame() 替换为 av_frame_alloc()。

编译成功

【FFMPEG】VS2013编译ffmpeg的更多相关文章

  1. 【FFMEPG】windows下编译ffmpeg2.5——使用VS2013,ARMLINUX,ANDORID编译ffmpeg

    原文:http://blog.csdn.net/finewind/article/details/42784557 一.准备: 1. 本机环境: win7 64bit: 2. 安装MinGW到C:\M ...

  2. Windows下使用Visual Studio 2010 编译ffmpeg全过程

    (注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...

  3. windows下用vs2010编译ffmpeg

    转载自;http://q1q2q3q4q5q6ln.blog.163.com/blog/static/500794332014666536283/ (注意:请务必先阅读:七,后记补充:) ffmpeg ...

  4. 第一次编译ffmpeg

    今天开始玩ffmpeg了. 从官网下载来的压缩包,不会编译诶,于是我开始研究起来了. 下面就是实时记录的随笔: 首先是从官网下载来的ffmpeg,就是下面这个版本,目前的最新版吧. http://ff ...

  5. iOS编译FFmpeg、kxmovie实现视频播放 (转载)

    由于FFmpeg开源框架的功能非常强大,可以播放的视频种类很多,同时添加第三方库kxmovie,实现视频播放,真的是爽爆了,因此今天来说一下关于FFmpeg在iOS手机上的一些配置过程,配置工具,还有 ...

  6. 编译FFmpeg成一个SO库<转>

    转帖地址:http://www.ihubin.com/blog/android-ffmpeg-demo-3/ ============================================= ...

  7. Linux下NDK编译FFMPEG包含neon参数

    FFMPEG编译成Android库已经有很多案例了,编译优化neon的也很多,以下是我通过实践成功的案例,这里主要讲编译的配置文件,其他设置可结合Linux下使用NDK编译FFMPEG(libstag ...

  8. [原]如何用Android NDK编译FFmpeg

    我们知道在Ubuntu下直接编译FFmpeg是很简单的,主要是先执行./configure,接着执行make命令来编译,完了紧接着执行make install执行安装.那么如何使用Android的ND ...

  9. 在Windows下利用MinGW编译FFmpeg

    目录 [隐藏]  1 环境与软件 2 第一步:安装MinGW 3 第二步:配置编译环境 4 第三步:配置SDL 5 第四步:编译 5.1 编译faac 5.2 编译fdk-aac 5.3 编译x264 ...

随机推荐

  1. sort multiple-level dict

    https://stackoverflow.com/questions/42247379/how-to-sort-multi-level-dictionary-by-its-value test_di ...

  2. 总结 1121 Java面向对象

    总结 Java面向对象的基础 三大特征: 封装(抽象),继承,多态 面向对象的内存分析: 栈, 堆, 代码区, 静态区 this: 代表当前对象本身 有时候需要把当前调用对象进行传递,那么就可以使用t ...

  3. Verilog Tricks

    1,可用generate产生512*FIFO 2,Vivado的warning也要全部排除 3,小module测完再往大module加 4,复位和IDLE处的置零操作一定要写全了 5,设计通信接收机时 ...

  4. sqlserver中产生随机字符,随机数

    SELECT REPLACE(NEWID(),'-','') select replicate(char(cast(rand()*1000 as int)%26+97) +char(cast(rand ...

  5. Java进阶知识25 Spring与Hibernate整合到一起

    1.概述 1.1.Spring与Hibernate整合关键点 1) Hibernate的SessionFactory对象交给Spring创建.    2) hibernate事务交给spring的声明 ...

  6. 「ARC103D」Robot Arms「构造」

    题意 给定\(n\)个点,你需要找到一个合适的\(m\)和\(d_1,d_2,...,d_m\),使得从原点出发每次向四个方向的某一个走\(d_i\)个单位,最终到达\((x_t, y_t)\).输出 ...

  7. 线段树QWQ

    一直没碰过线段树,个人认为好长好难,不过这几天做题遇到了裸的线段树的题,TAT. 线段树我理解就是把二叉树的左右节点现在分别看成是两个区间. 那么现在这两个区间的端点怎么存放?怎么能够把这个区间里的数 ...

  8. OpenPyXl的使用

    OpenPyXl的使用 开始在内存中使用 创建一个workbook 在刚开始使用openpyxl的时候,不需要直接在文件系统中创建一个文件,仅仅需要导入Workbook类并开始使用它: >> ...

  9. c++ 容器切片反转次序(不拷贝到新容器)

    // rotate algorithm example #include <iostream> // cout #include <algorithm> // rotate # ...

  10. springmvc返回json对象

    1.引入jackson的依赖 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -- ...