8,开源库的编译

开始写时,想把vlc/ffmepg/x264/xvid/都弄一遍,觉得很多代码都要自己编译一下才爽,后来发现,如果不做二次开发,拿dll回来用,足够了,不用费劲自己搞环境。大部分时间大家又想用windows平台下的编译方法,这又更加麻烦了,因为windows的shell环境太弱了,gcc又需要另外装,太麻烦了。

而且想弄的库什么的太多,我乃普通人,学不了这么多东西。另外有太多事情大家已经重复做过很多次,写了很多文章,我不用画蛇添足了。所以我决定打个折扣,只写一些大家不太关心的,但是又有一些人想知道的。

我要是能把264编解都搞定,xvid/ffmpeg又能用得虎虎生风,也不会像现在这样写普及文章了,呵呵。

这个完全是纯操作,按步骤,正常人都行的。

1.VLC

实际上授人以鱼,不如授人以渔。VLC的官方网站实际就有编译方法,就文档这一项,比其他项目强太多了。

链接在此:https://wiki.videolan.org/Category:Building/   选择你需要编译的平台看doc即可。

虽然按照步骤还会有一些问题出现,但是通常这些问题都可以google到。大部分时间,问题都出在autoconf/automake/libtools这套东西上,这个东西实在烂的可以,版本差异又极大,真是无药可救。

我大概说一下我做的过程,这个实际上和你的linux版本有太多关系了。而且我自己都是失败了放弃了很多很多次之后,才逐渐找个规律,然后现在基本都可以一次编译通过。

先装好需要的工具,cmake/yasm/svn/git/cvs,因为vlc编译时,有很多的依赖库会从网络下载,所以有时有些网站被墙时,有些tar.gz无法下载,你就需要自己去下载回来,然后放到contrib/tarballs下面。

% cd contrib

% mkdir native

% cd native

% ../bootstrap

% make

先编译依赖包,因为vlc本身只是一个框架,实际的协议栈/codec/这些库,早就有人开发好了,不用白不用,所以VLC就把这些库拿过来放到自己代码下面了。具体就在contrib/src下有很多。mk脚本,都是配置选项,下载链接之类的东西,在这里。编完依赖,回到根目录,直接make编译成功即可。

2.ffmpeg

 老规矩,告诉一个官方的文档来。

http://ffmpeg.zeranoe.com/builds/

这是一个ffmpeg for win32的编译网站,几乎每隔几天就会编译一个版本出来,如果需要开发,直接拿sdk和bin回来用,就可以了,自己在windows上架cygwin/mingw,真心不是好玩的,我玩了太多次,已经累觉不爱了。

3.x264

直接戳这里:http://download.videolan.org/pub/videolan/x264/binaries/

各种平台都有了,拿回来用吧。不爽的一点就是不知道有些编译选项是否打开,比如我要给ARM编译一个,看来这个需要自己动手编译了。

4.xvid

windows平台也很容易编译,因为这个项目组已经提供了vc项目了。只需一个f5即可。

不过要先装nasm才行。因为有些汇编优化代码是gnu格式的,windows的masm不认识。

一些其他的东西:

  关于264

  ffmpeg的代码,只有解码模块,没有编码模块,ffmpeg(这里指命令行工具)虽然能压缩片子,但是这个实际是调用x264实现的。

      x264的代码,主要是一个编码器,并不侧重解码这块,甚至没有完整的解码器实现。

      xvid和divx有一场圣战,详细请戳http://zh.wikipedia.org/wiki/Xvid

      nasm很多时候,开发软件真是非常痛苦,比如开发工具就非常郁闷。汇编的格式还有所不同,导致汇编器不一样,所以masm与nasm就出现了,一个是mirosoft的,一个gnu for win32的。更具体的区别

      http://hi.baidu.com/3100100788/item/819ef992dff650fe28164742

 

好吧,其实开源界的codec代码(FLAC/OGG/VP8/theora.....)实在太多了,真不知道国外怎么那么多高手,我连看都看不明白,他们随便写了一个又一个。不过真实的世界可能是,大公司为了推广自己的技术,派几个人做个开源版本,然后自己卖闭源软件。真是精明啊。

 

posted @ 2014-04-10 18:18  mr_nop  Views(532)  Comments(0Edit  收藏  举报