from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html

终于完成了了第二个Client side原型(for Wince),其中花掉我最多时间的就是ffmpeg的对WINCE的移植。其中有大半时间是由于网上的一些不完整及不正确信息所误导,但是没有这些零星的信息,我可能花费更多的时间。现在我把自己的移植过程分享给大家,我尽量做到事无巨细,也好让大家少走弯路,省去我们程序员们的时间。那可是大把的银子与信心浪费。呵呵,书归正传。

一,第一个想法,仍像从前移植平台代码一样,先找到这种跨平台代码的自己的特定平台的make文件或工程:

可惜没有发现ffmpeg 有for windows 及 for wince的make 及工程。再细读 ffmpeg的官方网站,让人仰天大笑,其中说到,由于VC/Visual studio 开发环境的编译器,对C99支持不好,而ffmpeg又是follow这些C语言规范写的,因此,不支持VC/VS的编译器。这比一些跨平台项目说windows OS is silly OS, not popular POSIX 从而不支持的说法更有趣。其实,从IT行业而言,这些理由都不是那么的合逻辑,也不够严谨。但代码是别人写的。我们又能如何呢?呵呵。

二,曲径通幽,既然ffmpeg不支持windows的编译器,那我们还有一个曲折的办法,它不是支持POSIX嘛 ,也就是支持linux/unix嘛 ,那我们就有了我们的办法,我们的windows平台上的linux编译器(算一种交叉编译吧,呵呵)于是大家想到了Cyxwin及 Mingw+Msys,其它,Cyxwin中编译出windows的平台上可用的库,还是调用了Mingw的编译器,于是我们就直接研究Mingw +Msys吧,但是这个东东有一个致命的弱点,就是要安装,分别要更新一堆组件,更新到什么版本呢,天知道,都用最新的吧。去相关的网站去下载他们(http://)不过Mingw的 sourceforge 网站真不是人去的,里面乱放,而且目录没有一个明确的索引,网站又慢,我是花了一天时间才找齐,后来发现ffmpeg有一个说明网页,可以明确下载。请参看(http://ffmpeg.arrozcru.org/wiki/index.php?title=MSys_MinGW)其中下载地址我再列一下,以方便大家:

Mingw: http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780&release_id=595197

Mingw插件更新:

http://prdownloads.sourceforge.net/mingw/binutils-2.18.50-20080109-2.tar.gz?download

http://prdownloads.sourceforge.net/mingw/mingwrt-3.15.1-mingw32-dll.tar.gz?download

http://prdownloads.sourceforge.net/mingw

http://prdownloads.sourceforge.net/mingw/w32api-3.13-mingw32-dev.tar.gz?download

最稳定的gcc编译器for mingw插件:

http://prdownloads.sourceforge.net/mingw/gcc-core-3.4.5-20060117-1.tar.gz?download

http://prdownloads.sourceforge.net/mingw/gcc-g++-3.4.5-20060117-1.tar.gz?download

至于安装过程,网上搜一下,不会有问题can't miss it

MSys:http://prdownloads.sourceforge.net/mingw/MSYS-1.0.11-2004.04.30-1.exe?download

相关插件更新:

http://prdownloads.sourceforge.net/mingw/MSYS-1.0.11-20080821-dll.tar.gz?download

http://prdownloads.sourceforge.net/mingw/bash-3.1-MSYS-1.0.11-snapshot.tar.bz2?download

http://prdownloads.sourceforge.net/mingw/coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2?download

http://prdownloads.sourceforge.net/mingw/make-3.81-MSYS-1.0.11-2.tar.bz2

至一Msys的安装及与Mingw整合在一起,网上查一下,can't miss it,

三 , 开始for windows的ffmpeg编译。这个ffmpeg论坛上倒有相关的指导。请参照:

http://ffmpeg.arrozcru.org/wiki/index.php?title=Static

这里有一个静态库的编译。按向导完成编译成静态lib库,可以址接进行编译链接到 windows项目中(only for windows平台,not for wince),好放到一个新的window项目中,编译成功,链接,一堆的库找不到,哈哈,仰天大笑,用工具一查相关引用,原来这些找不到函数,还在mingw的库中,也就是说要在项目中用ffmpeg的静态库,你还要搭上一堆mingw的库,就像现在市场上的搭配销售。再笑,我先找个地方睡半天,缓解我的想扁人的冲动。

睡醒之后,换种用法,我编动态库,这下你不会不把我的所有函数给我加到我的DLL里吧,再换了一些ffmpeg的./configure参数。搞定。生成了动态库,及lib.用到项目里,编译通过。不过,这只是万里长征第一步,我还要最痛苦的for wince的库。

四,for wince 的ffmpeg:

从linux的代码用mingw编成 for windows那是人家mingw的任务,我们也只绕了一道弯,for wince的mingw不存在呀,怎么办,忽然想到linux上的交叉编译,人家可以在linux用定制的gcc交叉编译器弄出for wince的库,那我们何不在Mingw上搞出for wince的库,一查,网上果然仅有的解决方案,也就是交叉编译成for wince 的ffmpeg,所用交叉编译器,大家可以看仔细了,

网上有绝大多数的相关贴子给的交叉编译器是不正确的(下载的地址不正确)真搞不懂网上一堆人转载别人的文章,也不去验证一下,转载干嘛?,我就是由于用了网上这些人转载地址去下载编不正确的编译器,浪费了3天的时间,无功而返。记住,下载的交叉编译器是 cegccmingw 下载地址是:()

进行编译。编译最新的库,会有一些汇编通不过。自己对汇编不熟悉,不过要是在linux上交叉编译应该没问题,有兴趣的话,可以自己试那个环境,那样的话,用的交叉编译器就应该是cegcc.

没办法,为了节省我的时间,我可是要在两周内完成三个平台的原型开发的。就拿了2007年的ffmpeg来编。其中也改了不少东西才编译能通过,首先,./configure 之后,在生成的config.mak中,要修改“SLIB_EXTRA_CMD=-lib /machine:i386 /def:$(@:.dll=.def)”为“SLIB_EXTRA_CMD=-lib /machine:arm /def:$(@:.dll=.def)”,及 “EXTRALIBS= -lm”改为“EXTRALIBS= -lm -lws2.lib”,其中编译过程中采取了perror禁用,有seek函数禁用与替换(由于没有用zlib,linux平台估计会没有问题).细节,可以有时间再写,有兴趣的话,可以加我MSN。

编译成功后。用在C++环境中。测试普通函数通过,不过在视频编换时,效率不高。

换了一下网上的别人编译的ffmpeg库,(网上有一个下载,不过此SDK在wince上用时,用在C++项目中有问题。头文件中有重复定义,解决办法是放在.c文件中,由Cpp文件来调用,这样可以规避这些问题,但这样就存在了一些全局变量.这样的头文件是不能用在Sybmian平台的。

另外一种思路就是不用ffmpeg.用Xvid解 mpeg4(测试下来效率好像要高于ffmpeg,毕竟是专门for mpeg4),用xh264解 H264,拿过他们的源代码一看,还是人家这跨平台,现成的for windows平台的工程make文件,这才是真正的跨平台。当然想要更多功能,ffmpeg地位还是无人能及。

如果有人对编解码做简单的跨平台移植有兴趣,可以加我MSN一起学习探计,相互学习,搞技术嘛,大家一起共享信息,会省掉多少人的多少个不眠之夜,我就是因为一些信息的不准确,害得我移了一周,每天可都工作到凌晨2点多。

好了,今天就写到这里,至于Symbian平台的移植,改天再写。

大家正在看
  • ASP.NET中如何实现FORM认证登录
  • Ext封装(二)
  • sqlplus登录命令
  • 谈谈UNIX如何管理磁盘
  • 志大才疏与工程性
  • 移动设备管理(MDM)与OMA(OTA)DM协议向导(三)——AAA服务器
  • JTree操作API
  • 生活定律
  • 【ffmpeg for wince】音视频编解码多...
  • junit4 单元测试
 

【ffmpeg for wince】音视频编解码多平台移植(for window/wince)相关推荐

  1. 【ffmpeg for wince】音视频编解码多平台移植(for window/wince))ffmpeg

    from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html 终于完成了了第二个Client side原型(for ...

  2. 移动视频监控(2)---原型开发---(音视频编解码多平台移植(for window/wince))ffmpeg --自由之路即是曲折之路。...

    终于完成了了第二个Client side原型(for Wince),其中花掉我最多时间的就是ffmpeg的对WINCE的移植.其中有大半时间是由于网上的一些不完整及不正确信息所误导,但是没有这些零星的 ...

  3. 基于FFmpeg 实现RTSP, 音视频编解码,视频流添加文字,音视频合成MP4

    前言: 最近闲这没事,整理了一下之前开发过的音视频编解码库,主要基于ffmpeg,实现音视频的编解码.视频流添加文字,音视频同步到MP4等功能.有需要的小伙伴可以参考参考,如果写的有什么不对的地方,欢 ...

  4. 【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式

    目录(?)[-] 编解码学习笔记二codec类型 编解码学习笔记三Mpeg系列Mpeg 1和Mpeg 2 编解码学习笔记四Mpeg系列Mpeg 4 编解码学习笔记五Mpeg系列AAC音频 编解码学习笔 ...

  5. FFmpeg音视频编解码示例

    FFmpeg示例程序集:https://www3.nd.edu/~sjiang1/docio/ffmpeg_doc/globals_eval.html FFmpeg音视频编解码示例:https://w ...

  6. 使用FFMPEG进行音视频编解码(C++) 0.简介

    FFMPEG介绍 FFMPEG是一个开源的编解码软件,读作"ef ef em peg".官方网址是:http://ffmpeg.org/.FFMPEG几乎支持所有的格式,当然了像一 ...

  7. mplayer 所支持的音视频编解码

    这里我把mplayer 所支持的音视频编解码都罗列出来,方便大家查阅: ---------------------------------------------------------------- ...

  8. Android 音视频编解码 MediaCodec

    MediaCodec 简介 Android中的MediaCodec是一个用于音视频编解码功能的API,使用它可以实现对音视频数据进行压缩.解压缩.编辑和转换.以下是MediaCodec的主要功能: 支 ...

  9. 各种音视频编解码学习详解之 编解码学习笔记(四):Mpeg系列——Mpeg 4

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读.大神博客传送门 ...

最新文章

  1. 笔记:面试 - Vue
  2. 基本概念之运算符与表达式
  3. oracle独立事务,Oracle中独立事务的处理
  4. python求图形面积_求高效的,计算两多边形重叠面积的算法,python实现
  5. JavaScript数据结构和算法简述——数组
  6. tk.mybatis Example 多个or条件拼接
  7. php执行出现500,为什么我的PHP总是出现500错误?
  8. 机器学习实战(八)分类回归树CART(Classification And Regression Tree)
  9. python爬虫xpath提取数据_Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结...
  10. 广州的11个辖区_广东广州下辖的11个行政区域一览
  11. swfobject2.2参数详解
  12. 怎么用计算机算加权平均数,教你如何制作加权平均分计算器
  13. python实现嗅探
  14. CF140C New Year Snowmen(贪心+优先队列)
  15. 论文翻译3-视频流SR技术分析
  16. 批量添加用户脚本--Linux bash
  17. RIP路由信息协议-个人总结
  18. Ceph用户:中国用户统计表(2018年度)
  19. Exchange Server 2007+0ffice Communication Server 2007构建统一消息平台
  20. 高通平台Android源码bootloader分析之sbl1(一)

热门文章

  1. 【转】DevOps到底是什么意思?
  2. 【转】10分钟精通SharePoint - VS开发模板
  3. 一步步编写操作系统 11 实模式下程序分段的原因
  4. vuebaidumap 删除覆盖物_VUE BAIDU MAP覆盖物 - 自定义覆盖物手记
  5. 一些网站github等无法连接服务器的解决办法
  6. oracle sparc 服务器系统,OracleSPARC服务器基础.PDF
  7. 【ZOJ - 4029】Now Loading!!!(整除分块,思维,二分,前缀和)
  8. 【PAT天梯】【L2-2 小字辈(左子右兄加强版)】(树,水题)
  9. 【蓝桥杯官网试题 - 算法提高 】求最大值 (dp,0-1背包)
  10. 【CodeForces - 27E】Number With The Given Amount Of Divisors (数论,数学,反素数)