【FFMPEG】VS2013编译ffmpeg
原文: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的更多相关文章
- 【FFMEPG】windows下编译ffmpeg2.5——使用VS2013,ARMLINUX,ANDORID编译ffmpeg
原文:http://blog.csdn.net/finewind/article/details/42784557 一.准备: 1. 本机环境: win7 64bit: 2. 安装MinGW到C:\M ...
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
(注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...
- windows下用vs2010编译ffmpeg
转载自;http://q1q2q3q4q5q6ln.blog.163.com/blog/static/500794332014666536283/ (注意:请务必先阅读:七,后记补充:) ffmpeg ...
- 第一次编译ffmpeg
今天开始玩ffmpeg了. 从官网下载来的压缩包,不会编译诶,于是我开始研究起来了. 下面就是实时记录的随笔: 首先是从官网下载来的ffmpeg,就是下面这个版本,目前的最新版吧. http://ff ...
- iOS编译FFmpeg、kxmovie实现视频播放 (转载)
由于FFmpeg开源框架的功能非常强大,可以播放的视频种类很多,同时添加第三方库kxmovie,实现视频播放,真的是爽爆了,因此今天来说一下关于FFmpeg在iOS手机上的一些配置过程,配置工具,还有 ...
- 编译FFmpeg成一个SO库<转>
转帖地址:http://www.ihubin.com/blog/android-ffmpeg-demo-3/ ============================================= ...
- Linux下NDK编译FFMPEG包含neon参数
FFMPEG编译成Android库已经有很多案例了,编译优化neon的也很多,以下是我通过实践成功的案例,这里主要讲编译的配置文件,其他设置可结合Linux下使用NDK编译FFMPEG(libstag ...
- [原]如何用Android NDK编译FFmpeg
我们知道在Ubuntu下直接编译FFmpeg是很简单的,主要是先执行./configure,接着执行make命令来编译,完了紧接着执行make install执行安装.那么如何使用Android的ND ...
- 在Windows下利用MinGW编译FFmpeg
目录 [隐藏] 1 环境与软件 2 第一步:安装MinGW 3 第二步:配置编译环境 4 第三步:配置SDL 5 第四步:编译 5.1 编译faac 5.2 编译fdk-aac 5.3 编译x264 ...
随机推荐
- 一个奇怪的方法解决华为ENSP模拟器路由器启动后命令行一直“#”的问题
今天打开ensp准备练习一下,设备启动以后发现端口一直是红色.于是打开路由器命令行,发现一直输出“#”号.百度后几乎试了所有方法,什么删除网卡再新建.重启计时器.配置ip地址..都不行. 可是我昨天用 ...
- js 获取窗口大小
//获得窗口大小 function findDimensions() //函数:获取尺寸 { var point = {}; ...
- STS工具各版本下载网址
官网网址:https://spring.io/tools3/sts/legacy
- php大文件上传
PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...
- [Luogu] 兽径管理
题面:https://www.luogu.org/problemnew/show/P1340 题解:https://www.zybuluo.com/wsndy-xx/note/1153773
- vue中插槽(slot)的使用
刚学vue的时候,曾经学习过slot插槽的使用,但是后面接触的不多,因为之前我还没使用element-ui... 但是使用了element-ui之后,里面的许多组件,有时候会使用插槽,为了巩固一下插槽 ...
- windows游戏编程 绘图基础
本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22451353 作者:jadeshu 邮箱: jades ...
- 卸载Ambari集群
清理ambari安装的hadoop集群 本文针对redhat或者centos 对于测试集群,如果通过ambari安装hadoop集群后,想重新再来一次的话,需要清理集群. 对于安装了很多hadoop组 ...
- Linux设备驱动程序 之 内存池
内核中有些地方的内存分配是不允许失败的,为了确保这种情况下的成功分配,内核开发者建立了一种称为内存池的抽象:内存池其实就是某种形式的后备高速缓存,它试图始终保存空闲的内存,以便在紧急状态下使用: me ...
- Node.js中npm常用命令大全
npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm ...