win7下ffmpeg编译动态链接库整理

1.写在ffmpeg编译前

关于ffmpeg的编译过程google一搜,一大堆,ffmpeg编译真的有那么难么?在我编译成功后回头来看,网上的资料过多,反而使自己走了很多的弯路。即便有些楼主亲自测试后编译成功了,由于受机器的环境、ffmpeg版本、以及个人操作的影响,导致在自己编译的时候不成功。

有些帖子发表的时间已经很久了,其中提到的到的软件现在也有了很大的更新,就如我后面提到的MinGW,较新的版本直接安装就可以了,无需手动更新一些文件。我写这篇文章的时间是2011/08/30。

系统环境:

操作系统:Windows 7 家庭普通版 Service Pack 1

Ffmpeg版本:ffmpeg-0.6.3,ffmpeg-0.6

开发环境:VS2008

注:

1) win7下的用户要特别注意了,之前我在参考:http://www.chinavideo.org/viewthread.php?tid=9129&extra=page%3D1&page=1 

中的帖子编译ffmpeg-0.6.3时,能够生成lib文件,但在调用这些lib库时却出现了莫名奇妙的问题,而且在我make install时也出现了permission deny的错误。这想问题应该出在,Msys和MinGW时没有使用管理员权限安装。

2) 关于ffmpeg的版本,我在编译ffmpeg-0.6.3时,能够生成lib文件,但在编译ffmpeg-0.6时,却生成的是.dll.a和.def后缀的文件,关于这个问题,文章后面会有解决方法。

1.1 MinGW安装以及ffmpeg0.6编译lib

安装过程和相关软件的下载是参照这篇帖子:http://zhaostudy2.blog.163.com/blog/static/13535020520110179271153/

但仍有几个重要的细节需要补充下:

1) Win7下的用户在安装MinGW时,要选择“以管理员身份运行”,这样会避免在编译ffmpeg-0.6.3时,生成的lib文件不能用的问题。同样的,在运行Msys时,也要选择“以管理员身份运行”。

2) 楼主提供的在csdn上提供的ffmpeg0.6我在照他的配置后并不能生成动态库(lib),在官方网站上下载的ffmpeg0.6还是不能自动生成动态库(lib),有可能是自带MakeFile的问题。在该文章的留言中,也有用户反映了这个问题。

3) Source forge上面的那个链接页面已经更改,“Tools”文件夹已经消失,还好楼主在csdn上有备份,不得不佩服楼主的先见之明。

1.1.1 ffmpeg0.6编译后不能生成lib文件的解决步骤:

以make后的ffmpeg0.6\libavcodec目录下为例,注意到在该目录中有一个avcodec-52.def的文件,对于该文件,在VS中是可以直接将def文件转换成lib文件的!

关于如何转换,直接参考:

http://blog.163.com/zhucongdzkd@126/blog/static/1399971932010814111127686/

里面也提到关于“没有找到mspdb80.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”的解决方案。

我的命令行参数如下图所示:


生成的lib可用!问题解决!

2.最终的编译文档

为防止前面引用的文章无法访问,我再将我的编译过程整理如下:

2.1MinGW下载及安装

1) MinGW下载地址:http://download.csdn.net/source/2988856

2) MinGW安装:win7下选择“以管理员身份运行”运行exe文件,后面步骤使用默认选项安装即可

2.2下载及编译ffmpeg0.6.3动态链接库

Ffmpeg0.6.3是可以直接编译生成动态链接库及.lib文件的。

Ffmpeg0.6.3官方下载地址:http://ffmpeg.org/releases/ffmpeg-0.6.3.tar.bz2

以管理员身份运行”运行MinGW32\MSYS\msys.bat文件

执行以下3条命令,

[plain] view plaincopy
  1. <span style="font-family:'Microsoft YaHei';font-size:13px;">cd /E/ffmpeg0.6.3  
  2. ./configure --enable-shared --disable-static --enable-memalign-hack   
  3. make</span>  


漫长的等待...


执行完以上3条命令后在E:\ffmpeg0.6.3\libavcodec下就可以找到avcodec-52.lib和avcodec-52.dll,其他几个lib开头的文件夹下也有相应的.lib文件和.dll文件,至此,ffmpeg编译动态链接库成功完成。

2.3下载及编译ffmpeg0.6动态链接库

Ffmpeg0.6官方下载地址:http://ffmpeg.org/releases/ffmpeg-0.6.tar.bz2

前面步骤与编译ffmpeg0.6时一致,但只生成了dll文件和def文件,没有生成lib文件。

后面就要使用VS2008中提供的lib.exe工具将def文件转换成lib文件。

1) 在C:\Program Files\Microsoft Visual Studio 9.0\VC\bin下双击lib.exe文件。若弹出“没有找到mspdb80.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”

将C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\mspdb80.dll复制到C:\Program Files\Microsoft Visual Studio 9.0\VC\bin下,再次双击lib.exe文件,lib.exe就可以正常启动了。


注意:为避免今后使用VS遇到问题,在成功生成lib文件后,要将mspdb80.dll从C:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录下删除。

2) 假设avcodec-52.def文件位于C:\test目录下,执行如下命令:

lib /out:c:\test\avcodec.lib /machine:IX86 /def:C:\test\avcodec-52.def

即可生成lib文件


至此,所有问题圆满解决

重要补充!!!

与我的解决方法很相似,但更加详细,还提到了无法生成.def文件时,修改config.mak文件的方法。http://blog.csdn.net/xiajia/article/details/6533182

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

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

相关文章

inputstream java_Java实现inputstream流的复制

获取到一个inputstream后&#xff0c;可能要多次利用它进行read的操作。由于流读过一次就不能再读了&#xff0c;而InputStream对象本身不能复制&#xff0c;而且它也没有实现Cloneable接口&#xff0c;所以得想点办法。实现思路&#xff1a;1、先把InputStream转化成ByteArray…

wzctool工具使用详解

Wzctool是WinCE一个比较小巧实用的无线Wifi配置小工具&#xff0c;借助命令行调用该程序能够非常简单地设置wifi的相应参数&#xff0c;能够在一定程度上避免书写代码的繁琐之举。 这个工具是在编译系统的时候&#xff0c;添加Wifi组件后自动生成的。如果用户直接进到Platform…

spring boot 入门_玩转springboot2.x之快速入门开山篇

Spring Boot简介Spring Boot的目的在于创建和启动新的基于Spring框架的项目。Spring Boot会选择最适合的Spring子项目和第三方开源库进行整合。大部分Spring Boot应用只需要非常少的配置就可以快速运行起来。Spring Boot是伴随着Spring4.0诞生的&#xff0c;旨在简化开发。Spri…

详细介绍Qt,ffmpeg 和SDl 教程之间的联系

Qt与 ffmpeg 与 SDl 教程是本文要介绍的内容&#xff0c;从多个角度介绍本文&#xff0c;运用了qmake&#xff0c;先来看内容。1. 注释 从“ #” 开始&#xff0c;到这一行结束。2. 指定源文件 1. SOURCES *.cpp 对于多源文件&#xff0c;可用空格分开&#xff…

如何生成JAR包

JDK中自带了jar命令&#xff0c;可以生成jar包&#xff0c;在命令行输入jar可以看到用法。 E:\20121008>jar用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...选项包括&#xff1a; -c 创建新的归档文件 -t 列出归档目录 …

java 匿名内部类 百科_java匿名内部类具体概念是什么,在什么地方用到?

展开全部java匿名内部类一定是在new的后面&#xff0c;用其隐含实现一个接口或实现一个类&#xff0c;没有类名&#xff0c;根据多态&#xff0c;我们e69da5e887aa62616964757a686964616f31333337613863使用其父类名。因他是局部内部类&#xff0c;那么局部内部类的所有限制都对…

python 元组 列表 字典区别_python编程:常用的数据结构之字典的方法总结,和列表和元组区别...

字典是一种键&#xff1a;值的形式&#xff0c;我们前面分享的文章学习了列表[],元祖&#xff08;&#xff09;&#xff0c;字典是由{}引起来的&#xff0c;列表的键对应的是列表的下标&#xff0c;而字典的值对应的是字典的键&#xff0c;我们可以通过字典的键来获取字典的值 …

ubuntu11.10中配置OGRE1.8

在这里提到的版本有点低&#xff0c;但对于Ubuntu11.10Ogre1.8照样适用。 对于Ubuntu 9.10及以上版本&#xff1a; 安装编译器及配置工具&#xff1a; sudo apt-get install build-essential automake libto 安装必须的依赖&#xff1a; sudo apt-get install libfreetype6-dev…

java 录音_用JAVA实现不限时录音功能

在网上找了个录音软件&#xff0c;而且这个软件是根据手机里剩余内存的大小&#xff0c;可以进行不限时录音&#xff0c;所以特地拿上来和大家分享&#xff01;这个JAVA软件我发到了“玩转手机”里。解压缩后&#xff0c;大家可以用MIDway_2.8中文&#xff0c;通过数据线上传到…

MinGw+Msys搭建环境 编译ffmpeg

MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合&#xff0c;允许你生成本地的Windows程序而不需要第三方C运行时 MinGW&#xff0c;即 Minimalist GNU For Windows。它是一些头文件和端口库的集合&#xff0c;该集合允许人们在没有第三方动态链…

redis 多线程_唬人的Redis多线程,也就那么回事

不羡鸳鸯不羡仙&#xff0c;一行代码调半天。原创&#xff1a;小姐姐味道&#xff08;微信公众号ID&#xff1a;xjjdog&#xff09;&#xff0c;欢迎分享&#xff0c;转载请保留出处。周末被一位小同学憋的很窝火。 他要和我探讨一下&#xff0c;redis到底是多线程的还是单线程…

关于客户端无法获得服务器端GP服务(Geoprocessing Service)结果的解决办法

之前发布了一个绘制等值面的服务&#xff0c;在本机测试的时候始终都可以访问&#xff0c;没有任何的问题&#xff0c;但是在远程访问时&#xff0c;出现了无法获得GP服务结果(注&#xff1a;结果为图片)的问题&#xff0c;而在服务器端确实生成了正确的结果。困扰了很久之后&a…

java 过滤器 中文_JAVA中文乱码过滤器(用java过滤器解决中文乱码)V0422 整理版

JAVA中文乱码过滤器(用java过滤器解决中文乱码)V0422 整理版不用再担心java中文乱码问题&#xff0c;一步到位&#xff0c;一次性解决。更方便更快捷。web-xml配置EncodingFiltercom.epet.util.EncodingFilterencodingGBKignoretrueEncodingFilter/*用java过滤器解决中文乱码哎…

ffmpeg 新老接口问题及对照集锦

ffmpeg源码包里面有个apichangs文档&#xff0c;里面有各种接口改变的记录&#xff0c;如果你发现接口不能用了&#xff0c;可以去搜索那个文档&#xff0c;可以找到对应的新接口&#xff0c;然后到新接口对应的头文件中找到说明文字 网上很多关于ffmpeg (libav)的资料都是N年…

c++界面开发_QT开发(三)——GUI原理分析

一、命令行程序命令行程序是面向过程的程序设计。命令行程序的特点&#xff1a;A、基于顺序结构执行B、程序执行过程中不需与用户交互C、程序执行结束给出最终运行结果命令行程序适用场合&#xff1a;A、单任务场合B、无交互、简单交互场合C、服务器应用场合二、GUI程序GUI程序…

[Ubuntu] Simple way to pass passwords on a shell script

here is the code for example: #!/bin/bashecho -e "your_password\nyour_password" | sudo /home/davidhhuan/the_shell_you_want_to_run.sh转载于:https://www.cnblogs.com/davidhhuan/archive/2012/11/12/2765983.html

解决链接错误:error LNK2001: 无法解析的外部符号 __iob

该错误主要是由于静态库在VC6编译而主程序在VC2005编译&#xff0c;大家用的CRT不同。解决办法&#xff0c;代码中增加 #ifdef __cplusplus extern "C" #endif FILE _iob[3] {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; 此错误的产生根源&#xff1a; 在…

pycharm使用_后端开发使用pycharm的技巧

1、使用说明首先说明&#xff0c;本文所使用的功能为pycharm专业版所支持&#xff0c;其他版本如社区版&#xff0c;教育版&#xff0c;则不一定支持。作为一名后端开发&#xff0c;我猜你的桌面上一定打开着一系列的软件&#xff0c;用作开发调试工具&#xff0c;比如navicat数…

关于javafx支持IOS、android等智能手机解决方案

这两天回到javafx社区逛了一下&#xff0c;发现对这个问题讨论很多... 看完后&#xff0c;有两种意见。 第一种&#xff1a;是主流的&#xff0c;包括javafx社区以及绝大部分oracle内部javafx开发人员的意见&#xff1a;应该要支持&#xff0c;而且想把这个事情加入roadmap&…

java视窗_java-预览窗口(如Windows 7任务栏显示已打开的...

一个极其简单的实现.import java.awt.*;import java.awt.image.*;import java.awt.event.*;import javax.swing.*;class ShowPreviews {class ToolTipListener extends MouseAdapter {JWindow toolTip;JLabel label;Component preview;ToolTipListener(Component preview) {thi…