之前接触VLC是因为Winrt的项目,后来似乎ARM版本的始终搞不定(没有针对于ARM-COFF的GCC编译器),vlc for winrt的项目好久没有更新了,自己也没有深入研究。有一天跟同事聊,他们说android和ios都没有一个像Media Foundation那样的多媒体框架,我就想到了是不是可以基于VLC这套框架来开发。研究完之后我才发现,VLC真的是一个伟大的项目。

我用了大概一周的时间来研究VLC的编译,文档上说的很简单,你git下来之后,运行脚本,喝杯咖啡,就编译好了(https://wiki.videolan.org/iOSCompile)。但赐予天朝的网络,很多依赖库下载不下来。所以在编译之前,必须要有给力的FQ环境才可以。

ios这边会有几个分支

http://git.videolan.org/?p=vlc-ports/ios.git;a=summary 这个是带有VLC for ios全部功能的分支,里面有包含UI和vlc的SDK,还有其他第三方库。

http://git.videolan.org/?p=vlc-bindings/VLCKit.git;a=summary 这个只是有vlc的sdk和一个简单的sample

如果你不想编译整个VLC,只是用他们的SDK,我建议从http://nightlies.videolan.org/build/ios/ 这边下载SDK,解压下载的文件,引用进vlc_for_ios.xcodeproj的项目里,直接生成就可以。

如果想编译VLC,我建议还是先已编译SDK 比较好,编译SDK的文档在这里(https://wiki.videolan.org/VLCKit/)

首先要用git clone 代码 git://git.videolan.org/vlc-bindings/VLCKit.git

如果你的MAC中已经安装了autoconf等工具,这里强烈建议把这些工具从PATH中移除再去跑脚本,VLC会下载对应的编译工具,如果不移除系统中的工具,会因为环境,或者版本冲突,报各种莫名其妙的错误。修改PATH用export就好。

然后执行./buildMobileVLCKit.sh

如果你的VPN给力的话,确实如文档所说喝个咖啡就好了。

但是我这边有好多包 curl下载不下来,比如freetype2等。这个时候可以通过浏览器下载,或者从别的地方copy过来,然后把把tar.gz文件放到 {vlckit主目录}/MobileVLCKit/ImportedSources/vlc/contrib/tarballs 下面。curl下载完之后会校验一下shasum的值。很奇怪的是浏览器下载的文件,这个值居然和curl下载下来的不一致。

这个时候要去修改{vlckit主目录}/MobileVLCKit/ImportedSources/vlc/contrib/src/{对应库的名字}/SHA512SUMS 文件。 我们先要修改下载文件的后缀名,我这里的环境.tar.gz被修改成了.tar,然后再用shasum -a 512 {文件名} 算出SHA的值,SHA512SUMS的值替换成我们算出来的。

还有些文件会被改名字,比如pkg-config-lite-0.27.1-1 会被改成pkg-config-0.27.1-1。这种情况会发生在curl无法下载的情况下,如果能正常下载,请忽略。这段逻辑在(vlckit主目录}/MobileVLCKit/ImportedSources/vlc/extras/tools/tools.mak 中描述)

接着再运行./buildMobileVLCKit.sh -n 切记要加-n的参数,这个参数是告诉脚本禁用网络,这样我们做的修改就不会被git给覆盖掉。当然如果你想checkout也行,但是我觉得这种方法简单有效。

如果你之前没有删除PATH,编译到后来会有莫名其妙的错误。这个时候把PATH改掉后,再去编译,有好多已经编译好的,autoconf不会再去给你配置一遍,所以还是会报错。这个时候你可以删除所有代码,重新clone一遍。再此之前,你可以尝试删除根目录的aclocal.m4 和configure文件,这样脚本就会再去configure一遍,或许能解决问题。

./buildMobileVLCKit.sh 是编译真机的 -s 是编译模拟器的 -d 是编译debug的

我所遇到的问题大概就这些,祝大家都能编译成功。

最后说几句题外话,vlc确实是一个伟大的项目,我尝试的是给vlc写一个demux的插件,个人感觉在虚拟机里面的性能还不错,由于公司比较抠,自己比较屌丝,没有真机测试。。。。但是我相信效果应该不是很差。

开源的那套编译器速度很快,比VS快多了。同样代码规格的项目在VS里面要等半天,而这套编译器刷个微博就好了。而且VS的这套东西也不兼容开源的代码,之前编译ffmpeg遇到的最大问题就是,VS的这套东西无法编译GNU风格的汇编。然后呢GCC又没有ARM-COFF的编译器,本来这个编译器应该是微软提供的,就像android那样,但是微软没出。。VS的C编译器本身也有问题,有些代码GCC能编译过,cl却不行。

编译VLC for IOS的更多相关文章

  1. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  2. Ubuntu15.10 编译VLC Android(安卓)过程记录

    持续更新中... 最后一次修改于 2016-03-20 15:33:45 1.必要库的安装 除基本编译环境(gcc.g++等外),需要额外安装如下的库(用于下载必要的依赖文件) (1)JDK 推荐安装 ...

  3. Msys+MinGW编译VLC

      说明:本文只是对官方文档进行简单的翻译总结,旨在帮助一些英文不太好的朋友.官方文档请见wiki.videolan.org/Win32CompileMSYSNew. Msys是MinGW的一个辅助工 ...

  4. 多媒体开发(7):编译Android与iOS平台的FFmpeg

    编译FFmpeg,一个古老的话题,但小程还是介绍一遍,就当记录.之前介绍怎么给视频添加水印时,就已经提到FFmpeg的编译,并且在编译时指定了滤镜的功能. 但是,在手机盛行的时代,读者可能更需要的是能 ...

  5. VLC for iOS 2.3.0

    http://www.cocoachina.com/bbs/read.php?tid=231898 VLC for iOS 2.3.0       本帖属于CocoaChina会员发表,转帖请写明来源 ...

  6. ubuntu下编译VLC源码

    http://blog.csdn.net/beitiandijun/article/details/9225591ubuntu下编译VLC源码 分类: 视频处理 2013-07-02 17:33 57 ...

  7. 在ubuntu16.04-32bits 下编译vlc和vlc-qt开源项目

      软件版本:  Ubuntu14.04 32位        Qt5.4.0  32位 开源项目: vlc2.2.4: wget http://download.videolan.org/pub/v ...

  8. win7下使用cygwin编译VLC

     win7下使用cygwin编译VLC http://kathy.blog.51cto.com/1168050/295460 2010-04-15 14:54:01 标签:编译 休闲 VLC 职场 w ...

  9. Linux下编译VLC for Android源代码总结

    转:http://blog.chinaunix.net/uid-26611383-id-3678766.html 由于项目需要,需要一个在android平台能够支持RTSP协议的播放器,由于之前没有a ...

随机推荐

  1. springmvc+hibernate4事务管理配置

    1.事务的特性 事务的四种特性: 原子性:体现一个事务的操作的不可分割,要么权执行,要么全不执行. 一致性:事务的执行结果必须从一种一致性状态变到另一种一致性状态.最典型的就是转账,两个账户A.B总金 ...

  2. mpdf与fpdf的使用比较

    php扩展 ---mpdf/fpdf 最近用到pdf扩展,需求是生成合同与简历的pdf,可供下载打印 mpdf 首先接触的是mpdf,从源码可以看出mpdf是基于fpdf与html2fpdf的成果. ...

  3. noip200807传纸条

    试题描述: 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的 ...

  4. StoryBoard学习(5):使用segue页面间传递数据

    StoryBoard学习(5):使用segue页面间传递数据 函数: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sen ...

  5. 学习笔记:Tab Bar 控件使用详解

    注意这里是:Tab Bar 不是Tab Bar Controller. Tab bar是继承UIView,所以可以添加到ViewController里.是View就可以add到另一个View上去.Ta ...

  6. object-c的http post请求之 ASIFormDataRequest使用

    ASIHTTPRequest类库中的ASIFormDataRequest是实现HTTP协议中的处理POST表单的很好的类库.使用起来非常简单. 在说明之前先需要了解HTTP请求的Get和Post方法. ...

  7. java中的容器解释

    解释一:容器(Container)Spring 提供容器功能,容器可以管理对象的生命周期.对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称.如何产生(Proto ...

  8. Current limiter allows large USB bypass capacitance

    The USB (Universal Serial Bus) specification requires a connected USB device to present a load to th ...

  9. Appium+python自动化17-启动iOS模拟器APP源码案例

    前言 上一篇已经可以启动iOS模拟器上的safari浏览器了,启动app比启动浏览器要复杂一点,本篇以github上的源码为案例详细介绍如何启动iOS模拟器的app 一.clone源码 1.githu ...

  10. Labeled Faces in the Wild 人脸识别数据集 部分训练数据

    development training set Note: images displayed are original (non-aligned/funneled) images. match pa ...