windows系统下_ffmpeg编译_2011年
ffmpeg开源库在linux系统下弄的,是一个很全的音频和视频的编解码库要在windows下编译出用于开发的lib库确实比linux下要麻烦,百度了很久,参照别人的见解终于成功编译出自己需要的可以用于开发的库(dll的形式,附带dll的lib,静态库不会编)
编译环境:window xp,vs2008(vs2003也成功编过一次),MinGW+msys百度出来的多数说的比较麻烦,特别是下载一些MinGW+msys的文件,随着时间的更新,实际上已经没有那么麻烦了。
1.首先去下载MinGW,去http://sourceforge.net/搜索mingw,下载一个最新的名字类似于mingw-get-inst-20110802.exe的文件这个文件一般只有几百K字节,下完以后双击运行,按提示安装,在需要选择的时候把和C、C++、msys相关的都选上,然后继续自动安装,然后需要等待一些时间(因为是下载文件安装的方式)。。。。MinGW+msys系统便已经安装好了,我安装的路径是C:\MinGW, msys的目录就是C:\MinGW\msys\1.0,下面都是按此路径说的(路径随便放哪都可以)
2.编辑C:\MinGW\msys\1.0\msys.bat文件,在最前面加入一行
call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
后面路径是你机器上安装了vs200x的对应路径,加入这行编译ffmpeg时会多出windows下调用dll对应的lib,方便vs200x调用,好像就看到ffmepg会生产,测试过xvid和x264及一些其他库都没生成,ffmpeg太仁慈了。
3.去ffmpeg的官方网站http://ffmpeg.org/上下载一个最新的版本,此时的版本是0.8,文件很小,应该能很快下载下来,解压,随便放哪,我展开目录是D:\pifu\ffmpeg-0.8\ffmpeg-0.8
注:ffmpeg编译里面的汇编代码需要yasm.exe,去yasm官网当一个window合适的最新版本,32bit和64bit不要弄错了,弄好改名成yasm.exe放到C:\WINDOWS\system32下去(主要是省得加环境变量),最好nasm也弄一个,经常某些库编译用的上。不放也无所谓,就是生成的东西不支持汇编,可以速度会很受影响
4.双击C:\MinGW\msys\1.0\msys.bat运行,进入目录D:\pifu\ffmpeg-0.8\ffmpeg-0.8 它和cmd运行有些区别,右斜杠需要换成左斜杠,然后盘符D:也需要更改/d上面输入cd /d/pifu/ffmpeg-0.8/ffmpeg-0.8,也可以分部进入如
cd /d
cd pifu
cd ffmpeg-0.8
cd ff*
等等。。。(*号可以替字符)
然后输入
./configure --enable-shared --disable-static --enable-memalign-hack
等待比较长的时间,界面回到$开头后输入
make
等待很长的编译时间,界面回到$开头后输入
make install
编译过程结束
需要的结果在C:\MinGW\msys\1.0\local目录下,有对应的头文件、dll加lib和ffmpeg.exe等运行程序
是不是很简单。
补充说明:make指令后实际上在ffmpeg目录里已经有生成的dll和lib了,但是make install指令还是建议要执行 因为它会为你整理好需要的头文件(太体贴了,自己全拷觉得太多,自己选择又太麻烦,而且不会正确),然后dll文件会小好几圈(原理不清楚)。第一个指令./configure加上make和make install三个指令可以在windows下用mingw编译很多来自于linux的开源库./configure --help可以看到./configure可以配置那些开关,后面输错了或者输少了没有关系,msys会提醒你,非常体贴。一般./configure能执行,那么根目录下都有一个configure文件,可以用wordpad或者其他文档编辑工具(如UE)打开
D:\pifu\ffmpeg-0.8\ffmpeg-0.8下的configure文件,里面可以找到./configure --help列出的文件。有这么一段
External library support:
--enable-avisynth enable reading of AVISynth script files [no]
--enable-bzlib enable bzlib [autodetect]
--enable-libcelt enable CELT/Opus decoding via libcelt [no]
--enable-frei0r enable frei0r video filtering
--enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
--enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
--enable-libopencv enable video filtering via libopencv [no]
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
--enable-libdirac enable Dirac support via libdirac [no]
--enable-libfaac enable FAAC support via libfaac [no]
--enable-libfreetype enable libfreetype [no]
--enable-libgsm enable GSM support via libgsm [no]
--enable-libmp3lame enable MP3 encoding via libmp3lame [no]
--enable-libnut enable NUT (de)muxing via libnut,
native (de)muxer exists [no]
--enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG [no]
--enable-librtmp enable RTMP[E] support via librtmp [no]
--enable-libschroedinger enable Dirac support via libschroedinger [no]
--enable-libspeex enable Speex decoding via libspeex [no]
--enable-libtheora enable Theora encoding via libtheora [no]
--enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
--enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
--enable-libvorbis enable Vorbis encoding via libvorbis,
native implementation exists [no]
--enable-libvpx enable VP8 support via libvpx [no]
--enable-libx264 enable H.264 encoding via x264 [no]
--enable-libxavs enable AVS encoding via xavs [no]
--enable-libxvid enable Xvid encoding via xvidcore,
native MPEG-4/Xvid encoder exists [no]
--enable-mlib enable Sun medialib [no]
--enable-zlib enable zlib [autodetect]
它们是指ffmpeg本身没有但可以扩展的的库,下面就继续说一下这个
5.扩展库,ffmpeg本身不支持MP3的编码,而我又强烈希望能编MP3
去http://sourceforge.net/搜索lame,此时是第一个,下载下来,仿照上面ffmpeg的步骤执行./configure,make,make install,执行./configure前先--help一下,如果有静态和动态库区别,关掉动态库,选择静态库(当然你也可以不理)执行完以后lame(实际上里面包含了mp3的编码)的库就在C:\MinGW\msys\1.0\local下了(库的输出路径
是可以设置的,不过最好不要去找那个麻烦)其它库也可以同样的执行,我试过x264 xvid libvo-aacenc libvo-amrwbenc zlib,前面两个很容易找到官方网站然后下载,后面的都是去sourceforge上搜的,主要注意./configure的时候加上汇编和线程的支持(如果支持的话)
然后ffmepg先卸载掉(也可以重新来过),进入目录D:\pifu\ffmpeg-0.8\ffmpeg-0.8,执行
make uninstall
./configure后面我的参数做为一个例子(下面是没有回车之类的):
./configure --enable-shared --disable-static --enable-w32threads --enable-m
emalign-hack --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libmp3lame -
-enable-zlib --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/li
b --enable-version3
--extra-cflags和--extra-ldflags是指明调用其它库的路径
最后我实际上是没有加上xvid和x264的。xvid是对mpeg4视频的编解码,功能非常强大,ffmpeg对mpeg4的编解其实也是支持的。x264是对h.264编码,非常高效,ffmpeg没有对h.264编码的支持。我没有加入这两个库的理由:我用了x264的vfw的一个版本,然后又用了加了x264支持的ffmpeg库,在一个进程里debug时碰到断言错误(release版本没有),所以没有加入x264,而且x264额外拿出来编码效率比ffmpeg高,然后我担忧xvid也可能碰到一样的情况,就都没有加入。
说到xvid当你用了xvid就请厌恶divx吧
x264我在CSDN上挂了一个很好的vfw的版本(第一次挂)http://download.csdn.net/source/3463887
适合开发,效率比最新的x264,用mingw编译出来的要好,而且整理过。可惜没人下载,估计资源快被删除了
6.最后说点不大相关的
生成的dll和lib有好几组,文件实际上是一样的,需要取类似avcodec-53.dll和avcodec-53.lib的文件,*.lib的名字
无所谓,但是dll的名字却是被限定的。用ue编辑avcodec-53.lib,里面一堆avcodec-53.dll的字符。有时后希望改掉
dll的名字,因为毕竟怕调用别人的库是人家也生成了ffmpeg的库,名字冲突可是很危险的事情。
这个可以简单操作一下,用ue把里面avcodec-53大小全字匹配更改成别的名字,(名字长度需要和以前一样,不一样
结界自己去试),avcodec-53.dll也干这个事情,还有就是ffmpeg里生成的dll都用到了avutil-51.dll,avcodec-53.dll里
对应的的avutil-51.dll字符需要对应更改。(上述说文件名只是举例,后面跟的版本后可能会改动)
在ffmpeg目录下搜索包含example的文件(应该有两个),照着写应该很容易写出简单的调用上面生成的ffmpeg库swscale库实现了原始图像格式的转换(支持很多很多格式)和大小的变化,只要调用两个方法(加一个释放相关的)轻松搞定,效率很不错,建议使用
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
windows系统下_ffmpeg编译_2011年相关推荐
- FFmpeg在Windows系统下的编译过程
由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译.要想使用FFMpeg,最先要解决 ...
- Tips--windows系统下gcc编译C文件为so共享库
windows系统下gcc编译C文件为so共享库 1. windows系统安装gcc编译工具 2. 利用gcc编译多个c文件 3. 利用python工具验证生成的so共享库 1. windows系统安 ...
- bat小工具_小程序反编译工具在windows系统下的调用脚本
点击上方蓝字可以订阅哦 之前的文章中介绍了小程序的反编译工具,工具在 Linux 系统下使用时执行bingo.sh [xxx.wxapkg]就可以. 有小伙伴不知道在windows系统下如何使用,这里 ...
- Windows系统下编译torch-points-kernels
想在Windows系统下运行pytorch做点云深度学习.安装torch-points-kernels遇到了不少问题. 这个博客里主要讲的torch-points3d点云工具箱安装,讲的很全面很详细, ...
- Open Inventor: Windows系统下编译安装Quater
Windows系统下编译安装Quater 济南友泉软件有限公司 一.工具安装 1.1 CMake CMake是一个用于生成不同平台下构建项目的工具.建议使用3.0版本之后的CMake.下载链接 1.2 ...
- Windows系统下搭建MPI环境
Windows系统下搭建MPI环境 MPI的全称是Message Passing Interface即标准消息传递界面,可以用于并行计算.MPI的具体实现一般采用MPICH.下面介绍如何在Window ...
- Windows系统下使用protobuf:protobuf的简介、安装、使用方法之详细攻略
Windows系统下使用protobuf:protobuf的简介.安装.使用方法之详细攻略 目录 protobuf的简介 protobuf的安装 protobuf的使用方法 protobuf的简介 P ...
- Windows系统C++配置编译OpenCV
Windows系统C++配置编译OpenCV 前言 首先是下载OPENCV, 下载并安装CMAKE 下载并安装mingw和gcc 可选.安装QT 使用CMAKE生成GCC和QT配置文件 需要一个好用的 ...
- Windows系统下多显示器模式开发
转载:开发日记地址 http://blog.sina.com.cn/s/blog_4078ccd60100049a.html 这几天研究了一下Windows系统的多显示器模式的编程,实现了Window ...
最新文章
- fork() || fork()和fork() fork()笔试题
- javascript函数上的prototype属性的理解
- linux 逻辑卷 pe size 4.00 mib大小怎么改,linux逻辑卷的建立
- vue中请求接口怎么封装公共地址_vue请求接口的封装
- golang 切片追加问题
- 图解数字签名Digital Signature 和数字证书Public-key certificate
- WWDC19 苹果宣布全新 UI 框架 SwiftUI
- 十大经典排序算法(附代码、动画及改进方案)
- linux未设置为接受端口,Simple gawk server
- kotlin学习笔记-异常好玩的list集合总结
- 【SQL】分析函数功能-排序
- 02: python3使用email和smtplib库发送邮件
- 第一章-操作系统概论
- Scala的那些匿名函数
- 故障树分析法(FTA)
- [Objective-C]第一天
- Java文件压缩加密
- 学术日记#学术道德与人文素养
- Android学习-手把手教学实现仿微信发带图片朋友圈的UI设计
- 还在用 Guava Cache?它才是 Java 本地缓存之王!
热门文章
- .NET的MVVM框架
- COVID-19 肺炎疫情数据实时监控(python 爬虫 + pyecharts 数据可视化 + wordcloud 词云图)
- PWN-PRACTICE-BUUCTF-22
- python面向对象编程的语言_怎么使用python面向对象编程
- CCNP-第一篇-思科SLA+华为BFD+ODR+浮动路由
- 【PAT - 甲级1007】Maximum Subsequence Sum (25分)(前缀和)
- 【牛客 - 317D】小a与黄金街道(数论,tricks)
- 【POJ - 3624 】Charm Bracelet (dp,0-1背包裸题)
- 重读经典:《Momentum Contrast for Unsupervised Visual Representation Learning》
- Coursera自动驾驶课程第1讲:Welcome to the self-driving cars specialization