移植ffmpeg到VC环境心得

所有想学习ffmpeg的网友有福了,大名鼎鼎的ffmpeg,移植到Windows的VC6版本全部开源,编译环境为VC6+SP5+VCPP5。别忘记了顶贴哦。

移植ffmpeg到windows,主要的修改是ffmpeg中VC6不支持C99语法,简单移植步骤如下:

1:首先装好Linux、VMware和SDL,配置好smb,在Linux下编译通过,验证能正确的Run。

2:把Linux下相应目录的所有文件通过smb拖到Windows,以后的修改移植都在Windows下进行。

3:对照所有同名的.c文件和.o文件,如果有.c文件没有对应的同名.o文件,说明此.c文件没有编译,是多余的,可直接删除。不过我的习惯是在此文件后加.old后缀来标示,这类文件有几十个。注意有几个.c文件是被include在其他.c文件中,因此没有.o文件,不可删除,我的习惯是把这类文件加.inc后缀,并且修改相应include的文件名。这类文件共计有 jpeg_ls.c.inc,mdec.c.inc,motion_est_template.c.inc,svq3.c.inc和wmv2.c.inc。

4:修改config.h文件,关闭掉MMX/SSE2等汇编加速开关。定义CONFIG_WIN32标示目标系统为WIN32。

5:删掉目录下所有Linux编译生成的中间文件,包括.o文件,.d文件,还有Linux下的可执行文件。 如果怕删错了,就做好备份。

6:现在用VC6建一个工程文件,把所有文件的.c和.h文件加入到工程中,不包括ffmpeg.c/ffserver.c文件,不包括改了后缀名的.old文件和.inc文件。

    注意在libavcodec和libavformat目录下有些同名的.c文件,为区别同名.c文件,我的习惯是libavcodec目录下的文件名加_codec,libavformat目录下的文件名加_format。

7:为避免思维过多的切换,一次只处理一个方面的内容。首先搜查所有的AVCodec,对照.h文件中的定义改C99语法,通常是填一些NULL或0之类的值,接着搜查并处理所有的AVInputFormat,最后搜查并处理所有的AVOutputFormat。

8:搜查并处理所有AVRational语法。

9:至此,基本上主要的修改已经完成,剩下的主要有 动态数组和一些数组初始化,函数实参初始化等。

10:一维的动态数组比较好改,多维的动态数组比较困难,但是多维的动态数组多半用于编码,如果只要解码可以简单的注释掉。

11:数组初始化和函数实参初始化只需要多加一个临时变量,很简单的修改。

12:有些.h文件在VC6中找不到,有些可以从Linux中拷贝,也可以自己简单定义。最后编译修改.c文件的时候,一个一个的编译,一个一个的修改,没必要全部编译。

最后祝大家好运,移植顺利。开源的ffmpeg 是 51.8.0的版本,我大约修改了5天左右。

http://files.cnblogs.com/mcodec/ffmpeg.51.8_vc6.rar

 

from:http://www.cnblogs.com/mcodec/articles/1659671.html

时间: 2024-08-04 04:16:11

移植ffmpeg到VC环境心得的相关文章

急需-画直线的代码在VC 环境下编写

问题描述 画直线的代码在VC 环境下编写 在VC c++环境下编写一个程序,画直线,求代码.希望快点,谢谢了 解决方案 MoveToEx( hdc, xSrc, ySrc, NULL); LineTo( hwd, xDst, yDst); 就是直线

快速解决Android平台移植ffmpeg的一些问题_Android

IT行业是一个踩在巨人肩膀上前进的行业,否则做的事情不一定有意义,所以我也是基于havlenapetr移植的ffmpeg基础上做了些改进,他做的主要贡献有: 1. 移植了ffmpeg并将与媒体相关的结构体在java层重新进行了封装,方便应用程序在java层直接操作ffmpeg API,如各种媒体格式转码及播放,如图1所示 2. 模仿Android的MediaPlayer类实现了ffmpeg的播放接口,如setDataSource(),setDisplay(),start(), stop(),pa

c语言-在VC编的程序如何在非VC环境下运行呢?

问题描述 在VC编的程序如何在非VC环境下运行呢? 小白一枚,用C抄了一个猜拳游戏,生成的exe文件貌似不能在别的电脑上运行,有什么方法可以解决呢?静态链接如何实现呢? 解决方案 在VC中,是静态.还是动态,在工程的设置中修改一些设置即可.生成的 EXE 不能在另的电脑上运行,也就是说可以在自己的电脑上运行了.是不是?如果是,先修改为静态链接试试. 解决方案二: 解决方案三: 一个办法是在项目属性里改为MFC静态连接.另一个办法是新电脑运行时缺什么你就拷什么. 解决方案四: 看什么程序,如果是控

linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)

在虚拟机上yuv420可以正常显示 ,而945(D525)模块上却无法显示 ,后来验证了directdraw的yuv420也无法显示 ,由此怀疑显卡不支持 ,后把420转换为422显示. 420显示如下: /* 编译命令:arm-linux-gcc -o show2642 264showyuv2.c -I/usr/local/ffmpeg_arm/include/ -L/usr/local/ffmpeg_arm/lib/ -lswresample -lavformat -lavutil -lav

Linux中部署FFmpeg开源视频压缩环境过程简单笔记

下面是在Linux中部署FFmpeg和相关类库全过程的简单记录,如下: tar zxvf ./yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make make install tar xvfj ./x264.tar.bz2 cd x264 make clean ./configure --enable-shared make make install tar zxvf ./lame-3.99.5.tar.gz cd lame-3.99.5 ./confi

vc环境,使用COleDateTime,日期不可以自动增加,为什么?

问题描述 从8月30日自加到8月31日没有问题,但是从8月31日自加到9月1日就出现问题.我有试过在大月的最后一天就会发生这种不能自加的异常,都是31日不可以加到1日.请有过经验的高手指教. 解决方案 解决方案二:沙发,帮忙顶解决方案三:+1换成日期有算法

vc 环境下的程序 高配电脑不兼容

问题描述 在vc2003和vc2008下写的程序,在windowxp的不同配制的电脑上使用时,配制高点的电脑报错,主要是用new申请内存时报错,但在*.exe的属性中的兼容性中,把兼容模式勾选,并选用Windows2000时,问题临时解决了.不知道这是什么原因?有没有更好的解决方法? 解决方案 解决方案二:编译问题.注意编译选项

Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 详细图文讲解

android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把环境搭建起来了,把过程记录下来分享给大家. 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装CDT插件 6.安装Sequoyah插件 7.JNI编译环境配置 画了一个思维导图让大家一目了然配置过程   -------------------------

给正准备学习VC++朋友的建议

 说实在的,自己也就是那半瓢水晃来晃去的,"指手画脚"就不敢说了,只是交流一下学习的心得,当初一路买的书籍有很多,突然发现自己有点像读书年代那样,桌面上放着一大堆的辅助书籍,一学期结束了崭新的书被迫被我3毛一斤卖掉....       所以书不在多,在"精与经"."精"则是同类书籍中能略胜一筹的那种,而"经"则便是经常看的"经",而不是大多也都压床低的那种.总结了,书如果觉得确实好先推荐朋友买,然后自己再借