• 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.....)实在太多了,真不知道国外怎么那么多高手,我连看都看不明白,他们随便写了一个又一个。不过真实的世界可能是,大公司为了推广自己的技术,派几个人做个开源版本,然后自己卖闭源软件。真是精明啊。

  • 相关阅读:
    android之下载416错误
    eclipse之常用工具总结
    php之Callback 回调类型
    smarty的自定义函数
    Unable to open sync connection异常
    android之android Studio 安装后打不开的解决方法
    android之ExpandableListView 的滑动到底部的精确监听事件
    wampserver2.0下配置虚拟主机
    wc之初认识
    php开发中常见函数记录
  • 原文地址:https://www.cnblogs.com/mr-nop/p/3657146.html
Copyright © 2020-2023  润新知