之前接触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. 【9.2校内测试】【开学祭】【exgcd】【树规(背包】【模拟】

    比较裸的$exgcd$的应用? $exgcd$可以算出在$x$和$y$分别是最小正整数时的解.注意在这里因为有$a(x+\frac{b}{d})+b(y-\frac{a}{d})=c$,$d=gcd( ...

  2. [bzoj1025][SCOI2009]游戏 (分组背包)

    Description windy学会了一种游戏.对于1到N这N个数字,都有唯一 且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,……,N写一排在纸上.然后再在这一排下面写上它们 ...

  3. bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 -- 凸包

    1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 Time Limit: 3 Sec  Memory Limit: 64 MB Description 为了防止 ...

  4. nginx hello模块代码

    // ngx_http_mytest_module.c #include "ngx_core.h" #include "ngx_string.h" #inclu ...

  5. Android TextView 显示HTML加图片

    TextView显示网络图片,我用android2.3的系统,可以显示图片出来,并且如果图片比较大,应用会卡的现象,肯定是因为使用主线程去获取网络图片造成的,但如果我用android4.0以上的系统运 ...

  6. InvalidateRect()与Invalidate()的用法(转)

    BOOL InvalidateRect(   HWND hWnd,           // 窗口句柄   CONST RECT* lpRect,   // 矩形区域   BOOL bErase    ...

  7. Unused port adds a PWM/analog channel to a microcontroller

    Low-cost, 8-bit, single-chip microcontrollers are stingy when it comes to on-chip PWM (pulse-width-m ...

  8. 解决Visual Studio 2010 “无法导入以下密钥文件” 错误

    错误原文: "错误 1 无法导入以下密钥文件: SamplePlugin.pfx.该密钥文件可能受密码保护.若要更正此问题,请尝试再次导入证书,或手动将证书安装到具有以下密钥容器名称的强名称 ...

  9. java Integer包装类装箱的一个细节

    原文:https://www.cnblogs.com/JackPn/p/9392145.html java有八个基本数据类型,每个都有对应的一个包装类,比如int对应的Integer.从jdk1.5开 ...

  10. .NET:负载平衡的主意事项

    允许局域网发现和共享. 设置固定IP. 网站的IP设置为“全部未分配”. 注意:如果停止IIS的话,不会对负载平衡有影响,负载还是会分配停止了的IIS所在在的电脑,只有停止服务器了,负载不会再分配给停 ...