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库实现了原始图像格式的转换(支持很多很多格式)和大小的变化,只要调用两个方法(加一个释放相关的)轻松搞定,效率很不错,建议使用

 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

部署WEB项目到服务器(三)安装mysql到linux服务器(Ubuntu)详解

突发奇想,想在自己电脑上部署一个web网站。 1,首先是下载一个适合自己已安装服务器版本的mysql数据库。 这里使用网上的链接http://dev.mysql.com/downloads/mysql/5.6.html#downloads 或者使用代理网站上下载:https://mirrors.huaweicloud.c…

在Windows下编译ffmpeg完全手册

本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法。 注: 1. 对于compil…

padding和卷积的区别_TensorFlow笔记1——20.CNN卷积神经网络padding两种模式SAME和VALID...

第1种解说:(核心最后一张图,两种填充方式输出的形状尺寸计算公式)在用tensorflow写CNN的时候,调用卷积核api的时候,会有填padding方式的参数,找到源码中的函数定义如下(max pooling也是一样)&am…

MORMOT数据库连接池

MORMOT数据库连接池 MORMOT封装了一堆的PROPS控件,用于连接各种数据库。 MORMOT的封装是武装到了牙齿的,这堆PROPS控件居然数据库连接池也封装好了。这就为我们省了不少事,笔者非常喜欢! 下面拿TOleDBMSSQLConnectionProperties控…

循环神经网络变形之 (Long Short Term Memory,LSTM)

1、长短期记忆网络LSTM简介 在RNN 计算中,讲到对于传统RNN水平方向进行长时刻序列依赖时可能会出现梯度消失或者梯度爆炸的问题。LSTM 特别适合解决这种需要长时间依赖的问题。 LSTM(Long Short Term Memory,长短期记忆网络)是R…

Windows 系统下使用 MinGW + MSYS + GCC 编译 FFMPEG

一定要按照顺序操作,否则你很可能持续遇到很多奇怪的问题(ffmpeg对编译系统版本要求比较高)。 1. www.mingw.org: 下载并安装 MinGW 5.1.4 (http://jaist.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe),安装时选中 g, m…

eclipse怎样改编码格式_Eclipse中各种编码格式及设置

操作系统:Windows 10(家庭中文版)Eclipse版本:Version: Oxygen.1a Release (4.7.1a)刚看到一篇文章,里面介绍说Ascii、Unicode是编码,而GBK、UTD-8等是编码格式。Java中的编码问题(by 迷失之路):https://www.cnblogs.c…

UE4 ShooterGame Demo的开火的代码

之前一直没搞懂按下鼠标左键开火之后&#xff0c;代码的逻辑是怎么走的&#xff0c;今天看懂了之前没看懂的部分&#xff0c;进了一步 ShooterCharacter.cpp void AShooterCharacter::OnStartFire() {AShooterPlayerController* MyPC Cast<AShooterPlayerController>(Co…

kafka 异常:return ‘<SimpleProducer batch=%s>‘ % self.async ^ SyntaxError: invalid syntax

Python3.X 执行Python编写的生产者和消费者报错&#xff0c;报错信息如下&#xff1a; Traceback (most recent call last): File "mykit_kafka_producer.py", line 9, in <module> from kafka import KafkaProducer File "/usr/local/lib/python3.7/sit…

python 分布式计算框架_漫谈分布式计算框架

如果问 mapreduce 和 spark 什么关系&#xff0c;或者说有什么共同属性&#xff0c;你可能会回答他们都是大数据处理引擎。如果问 spark 与 tensorflow 呢&#xff0c;就可能有点迷糊&#xff0c;这俩关注的领域不太一样啊。但是再问 spark 与 MPI 呢&#xff1f;这个就更远了。…

Codeforces 899D Shovel Sale

题目大意 给定正整数 $n$&#xff08;$2\le n\le 10^9$&#xff09;。 考虑无序整数对 $(x, y)$&#xff08;$1\le x,y\le n, x\ne y$&#xff09;。 求满足 「$xy$ 结尾连续的 9 最多」的数对 $(x,y)$ 的个数。 例子&#xff1a; $n50$&#xff0c;$(49,50)$ 是一个满足条件的…

Windows系统使用minGW+msys 编译ffmpeg 0.5的全过程详述

一.环境配置 1.下载并安装 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourcef … -5.1.4.exe)&#xff0c;安装时选中 g, mingw make。建议安装到c:/mingw. 2.下载并安装 MSYS-1.0.11-rc-1.exe (http://jaist.dl.sourceforge.net/sourcef … 1-rc-1.exe)&#xff0c;安…

Liunx安装gogs,mysql,jdk,tomcat等常用软件

Liunx CentOS系统采用yum安装Mysql 一.安装mysql客户端 yum -y install mysql 二.安装mysql服务器端 [注意:由于CentOS7下的不自带mysql-server,所以得先安装资源包,步骤: 1.wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm (采用wget获取必须有wge…

stm32单片机端口映射_STM32单片机的重映射与地址映射的使用方法及步骤

重映射STM32中对于一些端口的外设已经被其他引脚所使用&#xff0c;这是就需要用端口重映射来解决了&#xff0c;很方便。以USART1为例重映射的步骤为&#xff1a;打开重映射时钟和USART重映射后的I/O口引脚时钟&#xff0c;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_A…

python 第三方模块 yaml - 处理 YAML (专门用来写配置文件的语言)

markdown 的配置使用 Yaml —— Yet Another Markup Language &#xff1a;另一种标记语言。 简介 YAML 是专门用来写配置文件的语言&#xff0c;非常简洁和强大&#xff0c;远比 JSON 格式方便。 YAML在python语言中有PyYAML安装包。 YAML 语言&#xff08;发音 /ˈjməl/ &…

程序员 赚钱

业余编程赚钱 程序员的好方法 现在的人生活水平高了&#xff0c;开销也大了&#xff0c;同时对于一些技术性人员来说有很多种&#xff0c;有些程序员自己开公司&#xff0c;开发自己的产品&#xff0c;年赚百万&#xff0c;有些程序员还在给别人打工&#xff0c;每天累死累活的…

java合并单元格的快捷键_java poi合并单元格问题

使用poi导出的execl合并单元格&#xff0c;会出现下图问题整个单元格看似合并了&#xff0c;但是文字没有垂直居中&#xff0c;而且execl中所有的合并都会在第三行开始出现灰色分层样式合并单元格伪代码String upCompareField ""; //上一行的对比值for(int i 0; i …

webpack自动化构建脚本指令npm run dev/build

指令 为不同环境配置可执行指令&#xff0c;我们使用npm scripts方式&#xff0c;在package.json文件中配置执行指令&#xff1a; {"scripts": {"start": "cross-env NODE_ENVdev webpack-dev-server","build": "cross-env NODE_…

前端之 form 详解

认识表单 在一个页面上可以有多个form表单&#xff0c;但是向web服务器提交表单的时候&#xff0c;一次只可以提交一个表单。要声明一个表单&#xff0c;只需要使用 form 标记来标明表单的开始和结束&#xff0c;若需要向服务器提交数据&#xff0c;则在form标签中需要设置act…

代码 优化 指南 实践

C代码优化方案 华中科技大学计算机学院 姓名&#xff1a; 王全明 QQ&#xff1a; 375288012 Email&#xff1a; quanming1119163.com 目录 目录 C代码优化方案 1、选择合适的算法和数据结构 2、使用尽量小的数据类型 3、减少运算的强度 &#xff08;1&…