iphone5s哪个系统最好系统几可以支持vlc?

大修复:VLC Media Player 2.2.1下载|播放器|解码器|VLC_软件学园_新浪科技_新浪网
大修复:VLC Media Player 2.2.1下载
  著名的免费老牌播放器VLC Media Player
2.2.1已经发布,本次更新修复了2.2.0版的大量问题,完善了新版各项功能,建议新老用户下载使用这一版本。
  软件简介:
  它支持众多音频与视频解码器及档案格式,并支持DVD、VCD的播放及各类串流协议。它亦能作为unicast和multicast的串流服务器在IPv4以及IPv6的高速网络连线下使用。它融合了FFmpeg出品的解码器与libdvdcss程序库,这更使其增添了播放多媒体档案及加密DVD影碟的功能。
  VLC Media Player广泛支持主流的多媒体格式,如MPEG、WMV、MP4、MOV、3GP、FLV
(Flash)等,可播放DVD影碟,更支持在线媒体播放,可谓紧跟时代步伐。VLC的强大之处在于,它可以播放您从互联网上下载的几乎任何格式的视频文件,支持播放某些没有下载完成的视频文件部份内容,并支持边下载边观看,在同类软件中它可算是先驱者了。如果遇到VLC无法识别的文件类型,它会尝试用最可靠的方式来打开它,这往往非常见效。
  VLC Media Player 2.2.1更新日志:
   编解码器
  - 修复libavcodec旧版本编译问题
  - 修复一些VP9解码问题
  - 修复FLAC崩溃问题
  - 修复lpcm频道提供
  - 修复潜在NULL引用问题
  - 修复DVB PES包中的图文框代码
  - 修复schroendinger解码器潜在的缓冲溢出
  - 修复AAC采样率
   分配器
  - 修复MP4章节
  - 修复MKV过度搜索问题,包括网络分享缓慢等
  - 修复播放SPC文件的崩溃问题
  - 修复MKV中ATRAC3播放问题
  - 恢复旧版ASX代码
  - 通过mpeg音频解决TS问题
  - 修复sftp读取,关闭套接字
  - 使用Linux DVB 5.8以下版本修复DTV
  - 修复Windows系统UDP/RTP输入
   音频输出
  - 修复Alsa HDMI插件
  - 使用更大缓冲区提升Alsa输出
  - 使用多频道文件修复DirectSound输出
  VLC Media Player 2.2.1下载地址(27.51MB):
  扫一扫,一起坐看风云变幻。扫描下方二维码关注新浪科技官方微信(也可微信搜索:techsina或新浪科技)。
文章关键词:
&&|&&&&|&&&&|&&
您可通过新浪首页顶部 “”, 查看所有收藏过的文章。
,推荐效果更好!
看过本文的人还看过苹果iPhone指纹识别系统潜力巨大用处多
导读:苹果日前发布关于苹果新一代 iPhone 设备――iPhone 5S,外界最关注的就是它可能会添加的指纹识别功能。在 iOS 7 Beta 中开发者发现了“BiometricKitIU”代码字符串,暗示苹果可能考虑在 iOS 设备中添加生物特征识别系统(BRS)。
苹果日前发布关于苹果新一代 iPhone 设备&&iPhone 5S,外界最关注的就是它可能会添加的指纹识别功能。在 iOS 7 Beta 中开发者发现了&BiometricKitIU&代码字符串,暗示苹果可能考虑在 iOS 设备中添加生物特征识别系统(BRS)。如果苹果真的会在 iPhone 中添加这个系统,那么它会有哪些作用呢?下面我们就一起来看看:
指纹识别功能最明显的一个用户就是让用户登陆他们的设备,在传感器上按一下或者移动一下手指即可。iPhone 会使用数字码来锁定,限制设备访问权限。这种类型的认证方式可以替换或者增强目前的密码功能。但是用户可以利用 BRS 来登陆 iPhone。比如,通过苹果发布的API开发者就可以限制应用或者应用功能的访问权限。
指纹识别功能也可以用于确认网上购物。比如用户使用 iOS 亚马逊应用在亚马逊上购物,有了指纹识别功能他们就可以不需要亚马逊密码了。销售点也可以使用该功能,以替换 pin 码或签名。
苹果不愿意在 iOS 中推行多用户资料制,不过在 Mac 上他们倒支持这个机制,而且 Spple TV 上的 Netflix 也支持该机制。iPad 很快就成为一款常见的家庭设备,因此用户资料成为用户登陆 iOS 的时间也不远了,指纹识别功能可以让该机制的发展更快,确保个体识别和登陆的安全性。
iTunes 认证
要在 App Store 中购买内容,苹果用户必须拥有一个 Apple ID,而密码认证则是关键。如果用户的指纹能够绑定到 Apple ID,那用户购买内容是不是就更方便了?而且它有可能推动发展,让 Apple ID 从一个以苹果为中心的购买机制变成一个功能全面的电子钱包。
虽然 iOS 内置的家长控制系统已经很先进了,但是为了限制孩子对设备内容的访问权限,生物识别技术可能会发挥更大的作用。小孩子不需要将他们的指纹登记到设备之中的,但是如果家长指纹的输入,那么小孩在设备上可以使用的功能就会受到限制。
访问第三方服务
要实现这个功能,可能需要苹果方面进行复杂的编程,但是指纹识别还是可以用于访问第三方服务的。比如 Viper SmartStart 系统(使用者可以使用 iPhone 控制车门的开关、汽车的启动、警报器的控制等),iPhone 用户使用生物识别功能就可以控制他们的服务。
控制文件访问权限
iOS 社区中有太多的应用方便用户浏览和访问设备中的文件了。Pages、Dropbox 和 VLC 都是很好的例子。指纹识别功能可以针对特地文件使用新,限制它被访问的权限。比如用户可以对某张电子表格设置,要通过指纹识别才可以访问。
当然指纹识别功能的潜力还很巨大,它能从更多方面来完善iPhone的功能。可惜最近的消息显示iPhone 5S的 Home 键和 iPhone 5 的没有区别,那么我们是不是还要再等等,才能看到指纹识别功能登陆 iOS。
小编点评:从iOS 7 beta 5 曝光了指纹识别功能以来,指纹识别便受到了极大的关注,很明显,想要简单的植入指纹识别功能并没有想象的那么简单,即使它能给我们的手机带来更多的安全和便利。小编想苹果公司也正在努力的克服种种困难,让指纹识别系统更早问世。
阅读延伸:
责任编辑:飘荡海豚
我来说几句:
24小时最新头条推荐
404 Not Found
404 Not Found基于iOS5.0的MobileVLC(vlc for iOS)编译 -- 含FFMpeg库的编译解决办法
上篇文章:《黑苹果,iOS
SDK和MobileVLC之逆旅(二) 编译MobileVLC》(http://blog.csdn.net/madongchunqiu/article/details/6707068)发出之后,陆续和不少同学们有些交流。但那毕竟只是我入门iOS平台的学习之作,故不少问题也没能帮到大家。
近来工作有了阶段性成果,可以放松一下,而且手头上面的东西也和自制VLC有那么点沾边,正巧某同学提到iOS SDK5.0上面的编译环境似乎有了不少变化,我的老文章已经无法适应新环境了,所以花了点时间,终于把这个问题搞定了。
半夜三更还在敲键盘,的确有那么点啥。不过我是怕现在不写下来明天起床就忘记了~老了就这样。
下面开始。
一。编译环境:(Development Environment)
硬件平台:MBA
软件系统:Mac OS X Lion 10.7.3
开发环境:Xcode 4.2, iOS SDK 5.0
【注:开发环境不是最新的,是因为我手头的项目在那,怕升级后又要花时间调,想等到项目结尾再升到最新。】
【补注:据称,升级到Xcode4.3和iOS SDK5.1之后,开发环境最大的区别是SDK的目录由
/Developer/Platform/xxx
/Applications/Xcode.app/Contents/Developer/Platform/xxx
那么对于MobileVLC1.1.0版本而言,首先要做的,就是在源代码中,全局搜索/Developer/Platform/xxx,然后对其进行替换。或者把新目录中的东西再拷贝一份到老目录也行(似乎有些帖子就这么做的),但是考虑到既然Apple下决心换目录了,死抓着老的目录结构也没有必要。】
【补注的注:在bootstrap脚本中,会去查找/Developer/SDKs这个目录,也需要相应的修改】
二。编译的整体说明:(Overview)
总体来说,编译iOS5.0和iOS4.2的区别,在于几个编译器的“名字”变了,比如gcc-4.2和g++-4.2,在新的开发环境目录下都成了llvm-gcc-4.2或llvm-g++-4.2。据称是因为iOS SDK全面放弃使用GNU GCC的缘故。具体原因我也未查找更多资料,不过想来就是因为这些改变,所以才带来了更多的未可知变化。
就细节来说:编译simulator版本的MobileVLC和iOS Target版本的MobileVLC现在不能用同一个脚本了。别问我为什么会这样,我也很迷糊。如下所述
&- Simulator版本的更改:
&---&1. SDK版本号由3.2升级至5.0 【同iOS SDK4.2的编译修改】
&---&2. 编译选项彻底区分simulator版本和iOS target版本【同iOS SDK4.2的编译修改】
&---&3. 编译器名称改成:&cpp-4.2 -&&llvm-cpp-4.2&, &gcc-4.2 -&clang&, &g++-4.2 -&llvm-g++-4.2& 【注:这里用llvm-gcc-4.2编译失败后,再改用clang成功的。原因未深究。有人说iOS
SDK5.1的Simulator版本编译器目录下没有clang,这点我不甚明了。反正我iOS SDK5.0的Simulator版本编译器目录下是有clang的】
&- iOS target版本的更改
&---&1. SDK版本号由3.2升级至5.0 【同iOS SDK4.2的编译修改】
&---&2. 编译选项彻底区分simulator版本和iOS target版本【同iOS SDK4.2的编译修改】
&---&3. 编译器名称改成:&cpp-4.2 -&&llvm-cpp-4.2&, &gcc-4.2 -&llvm-gcc-4.2&, &g++-4.2 -&&llvm-g++-4.2& 【注:这里均使用llvm版本的编译器。请比较和Simulator版本的不同,此处使用clang反而会编译错误,原因未深究】
&---&4. 链接目录参数加入:-L${IOS_SDK_ROOT}/usr/lib/system
&---&5. 更改生成ffmpeg config的makefile,加入--disable-asm参数,原因后面详述
&---&6. 为了编译libdvbpsi库,稍稍修改iOS SDK的源文件,在/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/include中拷贝入两个新文件limits.h,原因后面详述。
下面一步步演示如何完成任务。
三。调试版本的修改过程:(Step by step for simulator version)
3.1 将MobileVLC 1.1.0的源代码(http://www.videolan.org/vlc/download-ios.html)下载到本地
3.2 创建目录(比如/VLC),并将3个源代码包解压在目录内,并依次重命名为:MediaLibraryKit, MobileVLC,&vlc
3.3 修改MobileVLCKit(即libVLC for iOS)的脚本文件(/VLC/vlc/extras/package/ios/build_for_iOS.sh),因为有几处改动,所以不如直接拷贝我这个版本好了。【注:2处改动,一个是iOS SDK的版本号,一个是编译器的名称】
[plain]&view
#!/bin/sh&&
echo&&Building&libvlc&for&the&iOS&&&
if&[&&$1&&=&&Simulator&&];&then&&
&&&&PLATFORM=&Simulator&&&
&&&&TARGET=&i686-apple-darwin10&&&
&&&&ARCH=&i386&&&
&&&&PLATFORM=&OS&&&
&&&&TARGET=&arm-apple-darwin10&&&
&&&&ARCH=&armv7&&&
&&&&OPTIM=&-mno-thumb&&&
THIS_SCRIPT_PATH=`pwd`/$0&&
pushd&`dirname&$0`/../../..&&
VLCROOT=`pwd`&#&Let's&make&sure&VLCROOT&is&an&absolute&path&&
DEVROOT=&/Developer/Platforms/iPhone${PLATFORM}.platform/Developer&&&
IOS_SDK_ROOT=&${DEVROOT}/SDKs/iPhone${PLATFORM}5.0.sdk&&&
BUILDDIR=${VLCROOT}/build-ios-${PLATFORM}&&
PREFIX=${VLCROOT}/install-ios-${PLATFORM}&&
IOS_GAS_PREPROCESSOR=&${VLCROOT}/extras/package/ios/resources/gas-preprocessor.pl&&&
export&AR=&${DEVROOT}/usr/bin/ar&&&
export&RANLIB=&${DEVROOT}/usr/bin/ranlib&&&
export&CFLAGS=&-isysroot&${IOS_SDK_ROOT}&-arch&${ARCH}&-miphoneos-version-min=3.2&${OPTIM}&&&
export&OBJCFLAGS=&${CFLAGS}&&&
if&[&&$PLATFORM&&=&&Simulator&&];&then&&
&&&&#&Use&the&new&ABI&on&simulator,&else&we&can't&build&&
&&&&export&OBJCFLAGS=&-fobjc-abi-version=2&-fobjc-legacy-dispatch&${OBJCFLAGS}&&&
export&CPPFLAGS=&${CFLAGS}&&&
export&CXXFLAGS=&${CFLAGS}&&&
export&CPP=&${DEVROOT}/usr/bin/llvm-cpp-4.2&&&
export&CXXCPP=&${DEVROOT}/usr/bin/llvm-cpp-4.2&&&
export&CC=&${DEVROOT}/usr/bin/clang&&&
export&OBJC=&${DEVROOT}/usr/bin/llvm-gcc-4.2&&&
export&CXX=&${DEVROOT}/usr/bin/llvm-g++-4.2&&&
export&LD=&${DEVROOT}/usr/bin/ld&&&
export&STRIP=&${DEVROOT}/usr/bin/strip&&&
if&[&&$PLATFORM&&=&&OS&&];&then&&
&&export&LDFLAGS=&-L${IOS_SDK_ROOT}/usr/lib&-arch&${ARCH}&&&
&&export&LDFLAGS=&-syslibroot=${IOS_SDK_ROOT}/&-arch&${ARCH}&&&
export&PATH=&/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:${VLCROOT}/extras/contrib/build/bin:${VLCROOT}/extras/package/ios/resources&&&
echo&&Boostraping&contribs&&&
pushd&${VLCROOT}/extras/contrib&&
#&contains&gas-processor.pl&&
export&PATH=$PATH:${VLCROOT}/extras/package/ios/resources&&
#&The&contrib&will&read&the&following&&
export&IOS_SDK_ROOT&&
echo&&Building&contrib&for&iOS&&&
./bootstrap&${TARGET}&ios&&
make&src&&
echo&&Building&contrib&for&current&host&&&
./bootstrap&&
if&[&&$PLATFORM&&=&&OS&&];&then&&
&&export&AS=&${IOS_GAS_PREPROCESSOR}&${CC}&&&
&&export&ASCPP=&${IOS_GAS_PREPROCESSOR}&${CC}&&&
&&export&AS=&${DEVROOT}/usr/bin/as&&&
&&export&ASCPP=&${DEVROOT}/usr/bin/as&&&
echo&&Bootstraping&vlc&&&
if&!&[&-e&${VLCROOT}/configure&];&then&&
&&&&${VLCROOT}/bootstrap&&
if&[&&.$PLATFORM&&!=&&.Simulator&&];&then&&
&&&&#&FIXME&-&Do&we&still&need&this?&&
&&&&export&AVCODEC_CFLAGS=&-I${PREFIX}include&&&
&&&&export&AVCODEC_LIBS=&-L${PREFIX}lib&-lavcodec&-lavutil&-lz&&&
&&&&export&AVFORMAT_CFLAGS=&-I${PREFIX}include&&&
&&&&export&AVFORMAT_LIBS=&-L${PREFIX}lib&-lavcodec&-lz&-lavutil&-lavformat&&&
mkdir&-p&${BUILDDIR}&&
pushd&${BUILDDIR}&&
#&Run&configure&only&upon&changes.&&
if&[&&${VLCROOT}/configure&&-nt&config.log&-o&\&&
&&&&&&${THIS_SCRIPT_PATH}&&-nt&config.log&];&then&&
CONTRIB_DIR=${VLCROOT}/extras/contrib/hosts/${TARGET}/ios&\&&
${VLCROOT}/configure&\&&
&&&&--prefix=&$PREFIX&&\&&
&&&&--host=&${TARGET}&&\&&
&&&&--enable-debug&\&&
&&&&--disable-shared&\&&
&&&&--enable-static&\&&
&&&&--disable-macosx&\&&
&&&&--disable-macosx-defaults&\&&
&&&&--disable-macosx-vout&\&&
&&&&--disable-macosx-dialog-provider&\&&
&&&&--disable-macosx-qtcapture&\&&
&&&&--disable-macosx-eyetv&\&&
&&&&--disable-macosx-vlc-app&\&&
&&&&--with-macosx-sdk=${IO_SDK_ROOT}&\&&
&&&&--enable-audioqueue&\&&
&&&&--enable-ios-vout&\&&
&&&&--enable-avcodec&\&&
&&&&--enable-avformat&\&&
&&&&--enable-swscale&\&&
&&&&--enable-faad&\&&
&&&&--disable-mad&\&&
&&&&--disable-a52&\&&
&&&&--disable-fribidi&\&&
&&&&--disable-macosx-audio&\&&
&&&&--disable-qt4&--disable-skins2&\&&
&&&&--disable-libgcrypt&\&&
&&&&--disable-remoteosd&\&&
&&&&--disable-vcd&\&&
&&&&--disable-postproc&\&&
&&&&--disable-vlc&\&&
&&&&--disable-vlm&\&&
&&&&--disable-httpd&\&&
&&&&--disable-nls&\&&
&&&&--disable-glx&\&&
&&&&--disable-visual&\&&
&&&&--disable-lua&\&&
&&&&--disable-sse&\&&
&&&&--disable-neon&\&&
&&&&--disable-mmx&#&MMX&and&SSE&support&requires&llvm&which&is&broken&on&Simulator&&
CORE_COUNT=`sysctl&-n&machdep.cpu.core_count`&&
let&MAKE_JOBS=$CORE_COUNT+1&&
echo&&Running&make&-j$MAKE_JOBS&&&
make&-j$MAKE_JOBS&&
make&install&&
3.4. 修改总脚本(/VLC/MobileVLC/buildMobileVLC.sh),将其替换成下面这个:【注:同iOS SDK4.2。其目的只是区分和细化了simulator版本和iOS target版本的参数】
[plain]&view
#!/bin/bash&&
rm&-rf&./MediaLibraryKit/External/MobileVLCKit&&
rm&-rf&./MobileVLC/External/MobileVLCKit&&
rm&-rf&./MobileVLC/External/MediaLibraryKit&&
if&[&&$1&&=&&Simulator&&];&then&&
&&&&pushd&vlc&&
&&&&&&&&echo&&--==--&Build&for&vlc&(simulator&version)&--==--&&&
&&&&&&&&pushd&extras/package/ios&&
&&&&&&&&&&&&./build_for_iOS.sh&Simulator&&
&&&&&&&&popd&&
&&&&&&&&echo&&--==--&Build&for&vlc-MobileVLCKit&(simulator&version)&--==--&&&
&&&&&&&&pushd&projects/macosx/framework&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&Aggregate&static&plugins&&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&MobileVLCKit&&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&&&&&popd&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MediaLibraryKit&(simulator&version)&--==--&&&
&&&&pushd&MediaLibraryKit&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphonesimulator&External/MobileVLCKit&&
&&&&&&&&xcodebuild&-project&MobileMediaLibraryKit.xcodeproj&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MobileVLC&(simulator&version)&--==--&&&
&&&&pushd&MobileVLC&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphonesimulator&External/MobileVLCKit&&
&&&&&&&&ln&-s&../../MediaLibraryKit/build/Release-iphonesimulator&External/MediaLibraryKit&&
&&&&&&&&xcodebuild&-project&MobileVLC.xcodeproj&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&popd&&
&&&&pushd&vlc&&
&&&&&&&&echo&&--==--&Build&for&vlc&(os&version)&--==--&&&
&&&&&&&&pushd&extras/package/ios&&
&&&&&&&&&&&&./build_for_iOS.sh&&
&&&&&&&&popd&&
&&&&&&&&echo&&--==--&Build&for&vlc-MobileVLCKit&(os&version)&--==--&&&
&&&&&&&&pushd&projects/macosx/framework&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&Aggregate&static&plugins&&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&MobileVLCKit&&-configuration&&Release&&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&&&&&popd&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MediaLibraryKit&(os&version)&--==--&&&
&&&&pushd&MediaLibraryKit&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphoneos&External/MobileVLCKit&&
&&&&&&&&xcodebuild&-project&MobileMediaLibraryKit.xcodeproj&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MobileVLC&(os&version)&--==--&&&
&&&&pushd&MobileVLC&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphoneos&External/MobileVLCKit&&
&&&&&&&&ln&-s&../../MediaLibraryKit/build/Release-iphoneos&External/MediaLibraryKit&&
&&&&&&&&xcodebuild&-project&MobileVLC.xcodeproj&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&popd&&
3.5. 运行脚本进行编译
[plain]&view
./MobileVLC/buildMobileVLC.sh&Simulator&&
3.6. 多运行几遍保证各个编译命令都是&Build SUCCEEDED&。需要多编译几次的原因我这次看了下,好像有这几种情况
&- a) FFMPEG库打patch时出错。这个似乎不影响使用。第二次编译可以通过
&- b) faad2库下载失败。可以回看log,看下载进度是不是到了100%,如果不是,去/VLC/vlc/extras/contrib/src-i686-apple-darwin10-ios/src/目录下,将下载的faad2-x.x.tar.gz和faad2库删掉。再重新编译。别的几个库同理。下载如问题多多,有必要时请加载V-PN...
&- c) 库下载解压后再编译时环境配置不到位。这时重新编译就可以发现会新编译一些东西,然后就可以过了。应该是脚本不够完善的缘故。
然后,就应该可以在simulator下调试了。不过很雷人的是VLC在调试界面下,无法导入文件,因此也没法有效调试。不过有个同学提到过可以hardcode入流媒体的链接,这不失为一种方法。不过我没有试过。经过JianJian同学的提示,我才意识到其实很容易就可以获取VLC在Simulator环境下的工作目录,NSSearchPathForDirectoriesInDomains这个API可以获取系统目录,在VLC项目中搜索这个函数(如果没有就自己写一个),然后将输出就可以看到了。获取了Simulator环境下的App工作目录之后,将待测试的视频文件拷贝入其下的Documents目录就可以被App识别了。
四。iOS目标版本的修改过程:(Step by step for iOS device version)
4.1 将MobileVLC 1.1.0的源代码(http://www.videolan.org/vlc/download-ios.html)下载到本地
4.2 创建目录(比如/VLC),并将3个源代码包解压在目录内,并依次重命名为:MediaLibraryKit, MobileVLC,&vlc
4.3 修改MobileVLCKit(即libVLC for iOS)的脚本文件(/VLC/vlc/extras/package/ios/build_for_iOS.sh),因为有几处改动,所以不如直接拷贝我这个版本好了。【注:3处改动,一是iOS SDK的版本号,二是编译器的名称,三是加入了新的链接目录】【注2:谁知道怎么改变这个code窗口内的字体颜色和样式吗?我改了之后,显示出来成了HTML源代码】
[plain]&view
#!/bin/sh&&
echo&&Building&libvlc&for&the&iOS&&&
if&[&&$1&&=&&Simulator&&];&then&&
&&&&PLATFORM=&Simulator&&&
&&&&TARGET=&i686-apple-darwin10&&&
&&&&ARCH=&i386&&&
&&&&PLATFORM=&OS&&&
&&&&TARGET=&arm-apple-darwin10&&&
&&&&ARCH=&armv7&&&
&&&&OPTIM=&-mno-thumb&&&
THIS_SCRIPT_PATH=`pwd`/$0&&
pushd&`dirname&$0`/../../..&&
VLCROOT=`pwd`&#&Let's&make&sure&VLCROOT&is&an&absolute&path&&
DEVROOT=&/Developer/Platforms/iPhone${PLATFORM}.platform/Developer&&&
IOS_SDK_ROOT=&${DEVROOT}/SDKs/iPhone${PLATFORM}5.0.sdk&&&
BUILDDIR=${VLCROOT}/build-ios-${PLATFORM}&&
PREFIX=${VLCROOT}/install-ios-${PLATFORM}&&
IOS_GAS_PREPROCESSOR=&${VLCROOT}/extras/package/ios/resources/gas-preprocessor.pl&&&
export&AR=&${DEVROOT}/usr/bin/ar&&&
export&RANLIB=&${DEVROOT}/usr/bin/ranlib&&&
export&CFLAGS=&-isysroot&${IOS_SDK_ROOT}&-arch&${ARCH}&-miphoneos-version-min=5.0&${OPTIM}&&&
export&OBJCFLAGS=&${CFLAGS}&&&
if&[&&$PLATFORM&&=&&Simulator&&];&then&&
&&&&#&Use&the&new&ABI&on&simulator,&else&we&can't&build&&
&&&&export&OBJCFLAGS=&-fobjc-abi-version=2&-fobjc-legacy-dispatch&${OBJCFLAGS}&&&
export&CPPFLAGS=&${CFLAGS}&&&
export&CXXFLAGS=&${CFLAGS}&&&
export&CPP=&${DEVROOT}/usr/bin/llvm-cpp-4.2&&&
export&CXXCPP=&${DEVROOT}/usr/bin/llvm-cpp-4.2&&&
export&CC=&${DEVROOT}/usr/bin/llvm-gcc-4.2&&&
export&OBJC=&${DEVROOT}/usr/bin/llvm-gcc-4.2&&&
export&CXX=&${DEVROOT}/usr/bin/llvm-g++-4.2&&&
export&LD=&${DEVROOT}/usr/bin/ld&&&
export&STRIP=&${DEVROOT}/usr/bin/strip&&&
if&[&&$PLATFORM&&=&&OS&&];&then&&
&&export&LDFLAGS=&-L${IOS_SDK_ROOT}/usr/lib&-L${IOS_SDK_ROOT}/usr/lib/system&-arch&${ARCH}&&&
&&export&LDFLAGS=&-syslibroot=${IOS_SDK_ROOT}/&-arch&${ARCH}&&&
export&PATH=&/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:${VLCROOT}/extras/contrib/build/bin:${VLCROOT}/extras/package/ios/resources&&&
echo&&Boostraping&contribs&&&
pushd&${VLCROOT}/extras/contrib&&
#&contains&gas-processor.pl&&
export&PATH=$PATH:${VLCROOT}/extras/package/ios/resources&&
#&The&contrib&will&read&the&following&&
export&IOS_SDK_ROOT&&
echo&&Building&contrib&for&iOS&&&
./bootstrap&${TARGET}&ios&&
make&src&&
echo&&Building&contrib&for&current&host&&&
./bootstrap&&
if&[&&$PLATFORM&&=&&OS&&];&then&&
&&export&AS=&${IOS_GAS_PREPROCESSOR}&${CC}&&&
&&export&ASCPP=&${IOS_GAS_PREPROCESSOR}&${CC}&&&
&&export&AS=&${DEVROOT}/usr/bin/as&&&
&&export&ASCPP=&${DEVROOT}/usr/bin/as&&&
echo&&Bootstraping&vlc&&&
if&!&[&-e&${VLCROOT}/configure&];&then&&
&&&&${VLCROOT}/bootstrap&&
if&[&&.$PLATFORM&&!=&&.Simulator&&];&then&&
&&&&#&FIXME&-&Do&we&still&need&this?&&
&&&&export&AVCODEC_CFLAGS=&-I${PREFIX}include&&&
&&&&export&AVCODEC_LIBS=&-L${PREFIX}lib&-lavcodec&-lavutil&-lz&&&
&&&&export&AVFORMAT_CFLAGS=&-I${PREFIX}include&&&
&&&&export&AVFORMAT_LIBS=&-L${PREFIX}lib&-lavcodec&-lz&-lavutil&-lavformat&&&
mkdir&-p&${BUILDDIR}&&
pushd&${BUILDDIR}&&
#&Run&configure&only&upon&changes.&&
if&[&&${VLCROOT}/configure&&-nt&config.log&-o&\&&
&&&&&&${THIS_SCRIPT_PATH}&&-nt&config.log&];&then&&
CONTRIB_DIR=${VLCROOT}/extras/contrib/hosts/${TARGET}/ios&\&&
${VLCROOT}/configure&\&&
&&&&--prefix=&$PREFIX&&\&&
&&&&--host=&${TARGET}&&\&&
&&&&--enable-debug&\&&
&&&&--disable-shared&\&&
&&&&--enable-static&\&&
&&&&--disable-macosx&\&&
&&&&--disable-macosx-defaults&\&&
&&&&--disable-macosx-vout&\&&
&&&&--disable-macosx-dialog-provider&\&&
&&&&--disable-macosx-qtcapture&\&&
&&&&--disable-macosx-eyetv&\&&
&&&&--disable-macosx-vlc-app&\&&
&&&&--with-macosx-sdk=${IO_SDK_ROOT}&\&&
&&&&--enable-audioqueue&\&&
&&&&--enable-ios-vout&\&&
&&&&--enable-avcodec&\&&
&&&&--enable-avformat&\&&
&&&&--enable-swscale&\&&
&&&&--enable-faad&\&&
&&&&--disable-mad&\&&
&&&&--disable-a52&\&&
&&&&--disable-fribidi&\&&
&&&&--disable-macosx-audio&\&&
&&&&--disable-qt4&--disable-skins2&\&&
&&&&--disable-libgcrypt&\&&
&&&&--disable-remoteosd&\&&
&&&&--disable-vcd&\&&
&&&&--disable-postproc&\&&
&&&&--disable-vlc&\&&
&&&&--disable-vlm&\&&
&&&&--disable-httpd&\&&
&&&&--disable-nls&\&&
&&&&--disable-glx&\&&
&&&&--disable-visual&\&&
&&&&--disable-lua&\&&
&&&&--disable-sse&\&&
&&&&--disable-neon&\&&
&&&&--disable-mmx&#&MMX&and&SSE&support&requires&llvm&which&is&broken&on&Simulator&&
CORE_COUNT=`sysctl&-n&machdep.cpu.core_count`&&
let&MAKE_JOBS=$CORE_COUNT+1&&
echo&&Running&make&-j$MAKE_JOBS&&&
make&-j$MAKE_JOBS&&
make&install&&
4.4. 修改总脚本(/VLC/MobileVLC/buildMobileVLC.sh),将其替换成下面这个:【注:同iOS SDK4.2,也同上面的Simulator版本,其目的只是区分和细化了simulator版本和iOS target版本的参数】
[plain]&view
#!/bin/bash&&
rm&-rf&./MediaLibraryKit/External/MobileVLCKit&&
rm&-rf&./MobileVLC/External/MobileVLCKit&&
rm&-rf&./MobileVLC/External/MediaLibraryKit&&
if&[&&$1&&=&&Simulator&&];&then&&
&&&&pushd&vlc&&
&&&&&&&&echo&&--==--&Build&for&vlc&(simulator&version)&--==--&&&
&&&&&&&&pushd&extras/package/ios&&
&&&&&&&&&&&&./build_for_iOS.sh&Simulator&&
&&&&&&&&popd&&
&&&&&&&&echo&&--==--&Build&for&vlc-MobileVLCKit&(simulator&version)&--==--&&&
&&&&&&&&pushd&projects/macosx/framework&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&Aggregate&static&plugins&&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&MobileVLCKit&&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&&&&&popd&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MediaLibraryKit&(simulator&version)&--==--&&&
&&&&pushd&MediaLibraryKit&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphonesimulator&External/MobileVLCKit&&
&&&&&&&&xcodebuild&-project&MobileMediaLibraryKit.xcodeproj&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MobileVLC&(simulator&version)&--==--&&&
&&&&pushd&MobileVLC&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphonesimulator&External/MobileVLCKit&&
&&&&&&&&ln&-s&../../MediaLibraryKit/build/Release-iphonesimulator&External/MediaLibraryKit&&
&&&&&&&&xcodebuild&-project&MobileVLC.xcodeproj&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&popd&&
&&&&pushd&vlc&&
&&&&&&&&echo&&--==--&Build&for&vlc&(os&version)&--==--&&&
&&&&&&&&pushd&extras/package/ios&&
&&&&&&&&&&&&./build_for_iOS.sh&&
&&&&&&&&popd&&
&&&&&&&&echo&&--==--&Build&for&vlc-MobileVLCKit&(os&version)&--==--&&&
&&&&&&&&pushd&projects/macosx/framework&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&Aggregate&static&plugins&&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&MobileVLCKit&&-configuration&&Release&&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&&&&&popd&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MediaLibraryKit&(os&version)&--==--&&&
&&&&pushd&MediaLibraryKit&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphoneos&External/MobileVLCKit&&
&&&&&&&&xcodebuild&-project&MobileMediaLibraryKit.xcodeproj&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MobileVLC&(os&version)&--==--&&&
&&&&pushd&MobileVLC&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphoneos&External/MobileVLCKit&&
&&&&&&&&ln&-s&../../MediaLibraryKit/build/Release-iphoneos&External/MediaLibraryKit&&
&&&&&&&&xcodebuild&-project&MobileVLC.xcodeproj&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&popd&&
4.5 修改生成FFMpeg的config.h的Makefile文件,禁用汇编。具体原因见下面的纠错Troubleshooting章节。
Makefile位于:/VLC/vlc/extras/contrib/src目录下
改动方式:搜寻关键字“FFMPEGCONF”,使其加入&--disable-asm&参数。我的方法是在搜寻到关键字&FFMPEGCONF&的第一个地方,将
[plain]&view
FFMPEGCONF&=&&&
[plain]&view
FFMPEGCONF&=&--disable-asm&&
【注:其实改在ffmpeg编译章节那里会更合适,不过反正作用是一样的。另:由于Makefile文件太大,就不贴原文了。】
4.6&为了编译libdvbpsi库,稍稍修改iOS SDK的源文件。这是因为编译时会报错说找不到&i386/limits.h&,所以需要把这个文件拷贝到他的搜寻目录中去。具体原因见后面的纠错Troubleshotting章节。
&- a) 找到目录:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/include
&- b) 在其中新建目录:i386
&- c) 全局搜索某个i386目录下的limits.h和_limits.h文件,并将搜索到的这两个文件拷贝入刚才创建的目录中。
【注:修改系统目录,有风险!请谨慎!】
【注2:新建目录时会提示需要administrator授权,别怕,只是新加了两个文件进去而已】
【注3:在新加入的目录中,留下个人醒目标志,以后好搜索还原】
4.7. 运行脚本进行编译
[plain]&view
./MobileVLC/buildMobileVLC.sh&&
4.8. 多运行几遍保证各个编译命令都是&Build SUCCEEDED&。需要多编译几次的原因我这次看了下,好像有这几种情况
&- a) FFMPEG库打patch时出错。这个似乎不影响使用。第二次编译可以通过
&- b) faad2库下载失败。可以回看log,看下载进度是不是到了100%,如果不是,去/VLC/vlc/extras/contrib/src-arm-apple-darwin10-ios/src/目录下,将下载的faad2-x.x.tar.gz和faad2库删掉。再重新编译。别的几个库同理。下载如问题多多,有必要时请加载V-PN...
&- c) 库下载解压后再编译时环境配置不到位。这时重新编译就可以发现会新编译一些东西,然后就可以过了。应该是脚本不够完善的缘故。
然后,就可以在下载到真机进行调试了。程序下载到iOS device后,debugger会报错,然后弹窗口说调试失败,未深究原因。不过MobileVLC这时已经可以直接在iOS device里面使用了。比如我向ipad的VLC中导入了rmvb/asf/mp4/mkv类型文件各一个,均可以播放哦~如图:
【注:由于去掉了FFMpeg的汇编,据称解码效率会有比较大的牺牲】
【注2:临时找的几个视频播放都还不错,mp3放进去没反应】
五。纠错 (TroubleShooting)
1. 一些基本原因,请参考上一篇同章节:《黑苹果,iOS SDK和MobileVLC之逆旅(二) 编译MobileVLC》 (http://blog.csdn.net/madongchunqiu/article/details/6707068)
2. 关于FFMpeg基于iOS5.0的编译问题。Google上有很多相关帖子。大致有如下原因:
&- a) 链接目录不对,导致出错:“ld: in /usr/lib/system/libcache.dylib, missing required architecture armv7 in file for architecture armv7”,请参考此文:StackOverflow
- building MobileVLC -& armc7 + ffmpeg issue&(/questions/6320053/building-mobilevlc-armc7-ffmpeg-issue)
&- b) 编译器选择错误,导致出错:&ld: library not found for -lcrt1.10.6.0&。clang/gcc/llvm-gcc等等,都试了试。
&- c) 未禁用inline asm或者asm,导致gas-preprocessor.pl处理时出错。原因似乎是因为编译器和汇编的指令集32bit/64bit不一致。下面这几篇文章中有比较详细的描述:StackOverflow
- FFmpeg for iOS5&(/questions/8323672/ffmpeg-for-ios5),yuvi / gas-preprocessor issue #16&(/yuvi/gas-preprocessor/issues/16),倾情奉献ios5.0编译ffmpeg,真机ok!&(/bbs/read.php?tid=98563)
&- d) 在xcode3.2.5 / iOS SDK4.2编译环境下,FFMpeg是没有这些乱七八糟的问题的。
3. 关于libdvbpsi库的编译问题,在SDK中居然缺乏必要的文件。这个问题应该也可以通过加入新的搜索目录来实现,但是我还是野蛮了一把直接改了SDK。这篇文章里面有比较详细的说明:multiple
arch flags won't work with -E&(http://lists.macosforge.org/pipermail/macports-dev/2011-February/013745.html)
4. 关于编译中下载第三方库并进行编译时,容易出错的原因:可能是库文件包下载不完整。我有好几次下载到一半就中断下载了,或者下载了半个小时没反应。。。最后发现还是V-PN比较好用。这种问题的解决方法就是多编译几次,或者删了下载的东西再重新编译,甚或新建一个VLC目录重新开始。
六。遗留 (TO DO)
等我的iOS SDK升级到5.1,还需要试试上面的东西管不管用。当然,如果哪位仁兄能帮我试试,然后给我一点反馈就再好不过了。
然后一直以来都是编译的MobileVLC1.1.0版本,也不清楚git上面的最新MobileVLC版本会如何。不知道VLC因为license问题无法在app store上上架,是否会影响其团队在iOS平台上继续开发。
我大概几个月后,会写一篇关于自制VLC实现个人&隐私&视频库的文章,希望到时候这些问题都能得到解决。
【注:其实自从发现truecrypt后,这个项目的意义就不大了。
传统加解密方式:优点-安全;缺点-每次回放前都需要解密;
truetype方式:优点-安全,一次性加密,实时回放;缺点-需要加载成虚拟盘;
自制VLC;优点-一次性加密,回放时实时解密;缺点-现在采用的不是常规加密方式,而只是加扰,故而几乎不可谈其安全性。不过总还是有实用价值的】
七。给读者的话 (Tips)
近来越来越多的收到读者来信,让我帮忙看看编译log找出问题。我把这些问题总结后发在下面的文章中了。如果你也在编译中有所苦恼的话,请看这里:
编译MobileVLC时,可能会用到的一些编译调试技巧集合(Mac)(http://blog.csdn.net/madongchunqiu/article/details/7931267)
八。参考文章 (References)
1.&StackOverflow - building MobileVLC -& armc7 + ffmpeg issue(/questions/6320053/building-mobilevlc-armc7-ffmpeg-issue)
2.&StackOverflow - FFmpeg for iOS5&(/questions/8323672/ffmpeg-for-ios5)
3.&yuvi / gas-preprocessor issue #16&(/yuvi/gas-preprocessor/issues/16)
4.&倾情奉献ios5.0编译ffmpeg,真机ok!(/bbs/read.php?tid=98563)
5.&multiple arch flags won't work with -E&(http://lists.macosforge.org/pipermail/macports-dev/2011-February/013745.html)
九。其它 (More)
我今天()才发现原来CSDN里多了好些&私信&,以前都没注意到有这个功能,所以都没有查看,更遑论回复,还请见谅。不过请不要再给我发&私信&了,因为要登录查看,感觉特麻烦,我一般是不会去查看的。有问题还请直接在文章后面留言,或者发邮件到我的信箱:,这两者都有消息推送,我即使不登录CSDN也可以收到的,方便很多。
注:有谁知道csdn的code那个框里面的文字如何改色和高亮吗?我改了之后,出来时变成了HTML Script的文字效果了。。。
上一篇:家里网络的变迁-兼谈多路由互联配置下一篇:给苹果打工:从iOS开发证书申请到App上架申请的步骤略谈【2012年8月版】
近来工作有了阶段性成果,可以放松一下,而且手头上面的东西也和自制VLC有那么点沾边,正巧某同学提到iOS SDK5.0上面的编译环境似乎有了不少变化,我的老文章已经无法适应新环境了,所以花了点时间,终于把这个问题搞定了。
半夜三更还在敲键盘,的确有那么点啥。不过我是怕现在不写下来明天起床就忘记了~老了就这样。
下面开始。
一。编译环境:(Development Environment)
硬件平台:MBA
软件系统:Mac OS X Lion 10.7.3
开发环境:Xcode 4.2, iOS SDK 5.0
【注:开发环境不是最新的,是因为我手头的项目在那,怕升级后又要花时间调,想等到项目结尾再升到最新。】
【补注:据称,升级到Xcode4.3和iOS SDK5.1之后,开发环境最大的区别是SDK的目录由
/Developer/Platform/xxx
/Applications/Xcode.app/Contents/Developer/Platform/xxx
那么对于MobileVLC1.1.0版本而言,首先要做的,就是在源代码中,全局搜索/Developer/Platform/xxx,然后对其进行替换。或者把新目录中的东西再拷贝一份到老目录也行(似乎有些帖子就这么做的),但是考虑到既然Apple下决心换目录了,死抓着老的目录结构也没有必要。】
【补注的注:在bootstrap脚本中,会去查找/Developer/SDKs这个目录,也需要相应的修改】
二。编译的整体说明:(Overview)
总体来说,编译iOS5.0和iOS4.2的区别,在于几个编译器的“名字”变了,比如gcc-4.2和g++-4.2,在新的开发环境目录下都成了llvm-gcc-4.2或llvm-g++-4.2。据称是因为iOS SDK全面放弃使用GNU GCC的缘故。具体原因我也未查找更多资料,不过想来就是因为这些改变,所以才带来了更多的未可知变化。
就细节来说:编译simulator版本的MobileVLC和iOS Target版本的MobileVLC现在不能用同一个脚本了。别问我为什么会这样,我也很迷糊。如下所述
&- Simulator版本的更改:
&---&1. SDK版本号由3.2升级至5.0 【同iOS SDK4.2的编译修改】
&---&2. 编译选项彻底区分simulator版本和iOS target版本【同iOS SDK4.2的编译修改】
&---&3. 编译器名称改成:&cpp-4.2 -&&llvm-cpp-4.2&, &gcc-4.2 -&clang&, &g++-4.2 -&llvm-g++-4.2& 【注:这里用llvm-gcc-4.2编译失败后,再改用clang成功的。原因未深究。有人说iOS
SDK5.1的Simulator版本编译器目录下没有clang,这点我不甚明了。反正我iOS SDK5.0的Simulator版本编译器目录下是有clang的】
&- iOS target版本的更改
&---&1. SDK版本号由3.2升级至5.0 【同iOS SDK4.2的编译修改】
&---&2. 编译选项彻底区分simulator版本和iOS target版本【同iOS SDK4.2的编译修改】
&---&3. 编译器名称改成:&cpp-4.2 -&&llvm-cpp-4.2&, &gcc-4.2 -&llvm-gcc-4.2&, &g++-4.2 -&&llvm-g++-4.2& 【注:这里均使用llvm版本的编译器。请比较和Simulator版本的不同,此处使用clang反而会编译错误,原因未深究】
&---&4. 链接目录参数加入:-L${IOS_SDK_ROOT}/usr/lib/system
&---&5. 更改生成ffmpeg config的makefile,加入--disable-asm参数,原因后面详述
&---&6. 为了编译libdvbpsi库,稍稍修改iOS SDK的源文件,在/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/include中拷贝入两个新文件limits.h,原因后面详述。
下面一步步演示如何完成任务。
三。调试版本的修改过程:(Step by step for simulator version)
3.1 将MobileVLC 1.1.0的源代码(http://www.videolan.org/vlc/download-ios.html)下载到本地
3.2 创建目录(比如/VLC),并将3个源代码包解压在目录内,并依次重命名为:MediaLibraryKit, MobileVLC,&vlc
3.3 修改MobileVLCKit(即libVLC for iOS)的脚本文件(/VLC/vlc/extras/package/ios/build_for_iOS.sh),因为有几处改动,所以不如直接拷贝我这个版本好了。【注:2处改动,一个是iOS SDK的版本号,一个是编译器的名称】
[plain]&view
#!/bin/sh&&
echo&&Building&libvlc&for&the&iOS&&&
if&[&&$1&&=&&Simulator&&];&then&&
&&&&PLATFORM=&Simulator&&&
&&&&TARGET=&i686-apple-darwin10&&&
&&&&ARCH=&i386&&&
&&&&PLATFORM=&OS&&&
&&&&TARGET=&arm-apple-darwin10&&&
&&&&ARCH=&armv7&&&
&&&&OPTIM=&-mno-thumb&&&
THIS_SCRIPT_PATH=`pwd`/$0&&
pushd&`dirname&$0`/../../..&&
VLCROOT=`pwd`&#&Let's&make&sure&VLCROOT&is&an&absolute&path&&
DEVROOT=&/Developer/Platforms/iPhone${PLATFORM}.platform/Developer&&&
IOS_SDK_ROOT=&${DEVROOT}/SDKs/iPhone${PLATFORM}5.0.sdk&&&
BUILDDIR=${VLCROOT}/build-ios-${PLATFORM}&&
PREFIX=${VLCROOT}/install-ios-${PLATFORM}&&
IOS_GAS_PREPROCESSOR=&${VLCROOT}/extras/package/ios/resources/gas-preprocessor.pl&&&
export&AR=&${DEVROOT}/usr/bin/ar&&&
export&RANLIB=&${DEVROOT}/usr/bin/ranlib&&&
export&CFLAGS=&-isysroot&${IOS_SDK_ROOT}&-arch&${ARCH}&-miphoneos-version-min=3.2&${OPTIM}&&&
export&OBJCFLAGS=&${CFLAGS}&&&
if&[&&$PLATFORM&&=&&Simulator&&];&then&&
&&&&#&Use&the&new&ABI&on&simulator,&else&we&can't&build&&
&&&&export&OBJCFLAGS=&-fobjc-abi-version=2&-fobjc-legacy-dispatch&${OBJCFLAGS}&&&
export&CPPFLAGS=&${CFLAGS}&&&
export&CXXFLAGS=&${CFLAGS}&&&
export&CPP=&${DEVROOT}/usr/bin/llvm-cpp-4.2&&&
export&CXXCPP=&${DEVROOT}/usr/bin/llvm-cpp-4.2&&&
export&CC=&${DEVROOT}/usr/bin/clang&&&
export&OBJC=&${DEVROOT}/usr/bin/llvm-gcc-4.2&&&
export&CXX=&${DEVROOT}/usr/bin/llvm-g++-4.2&&&
export&LD=&${DEVROOT}/usr/bin/ld&&&
export&STRIP=&${DEVROOT}/usr/bin/strip&&&
if&[&&$PLATFORM&&=&&OS&&];&then&&
&&export&LDFLAGS=&-L${IOS_SDK_ROOT}/usr/lib&-arch&${ARCH}&&&
&&export&LDFLAGS=&-syslibroot=${IOS_SDK_ROOT}/&-arch&${ARCH}&&&
export&PATH=&/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:${VLCROOT}/extras/contrib/build/bin:${VLCROOT}/extras/package/ios/resources&&&
echo&&Boostraping&contribs&&&
pushd&${VLCROOT}/extras/contrib&&
#&contains&gas-processor.pl&&
export&PATH=$PATH:${VLCROOT}/extras/package/ios/resources&&
#&The&contrib&will&read&the&following&&
export&IOS_SDK_ROOT&&
echo&&Building&contrib&for&iOS&&&
./bootstrap&${TARGET}&ios&&
make&src&&
echo&&Building&contrib&for&current&host&&&
./bootstrap&&
if&[&&$PLATFORM&&=&&OS&&];&then&&
&&export&AS=&${IOS_GAS_PREPROCESSOR}&${CC}&&&
&&export&ASCPP=&${IOS_GAS_PREPROCESSOR}&${CC}&&&
&&export&AS=&${DEVROOT}/usr/bin/as&&&
&&export&ASCPP=&${DEVROOT}/usr/bin/as&&&
echo&&Bootstraping&vlc&&&
if&!&[&-e&${VLCROOT}/configure&];&then&&
&&&&${VLCROOT}/bootstrap&&
if&[&&.$PLATFORM&&!=&&.Simulator&&];&then&&
&&&&#&FIXME&-&Do&we&still&need&this?&&
&&&&export&AVCODEC_CFLAGS=&-I${PREFIX}include&&&
&&&&export&AVCODEC_LIBS=&-L${PREFIX}lib&-lavcodec&-lavutil&-lz&&&
&&&&export&AVFORMAT_CFLAGS=&-I${PREFIX}include&&&
&&&&export&AVFORMAT_LIBS=&-L${PREFIX}lib&-lavcodec&-lz&-lavutil&-lavformat&&&
mkdir&-p&${BUILDDIR}&&
pushd&${BUILDDIR}&&
#&Run&configure&only&upon&changes.&&
if&[&&${VLCROOT}/configure&&-nt&config.log&-o&\&&
&&&&&&${THIS_SCRIPT_PATH}&&-nt&config.log&];&then&&
CONTRIB_DIR=${VLCROOT}/extras/contrib/hosts/${TARGET}/ios&\&&
${VLCROOT}/configure&\&&
&&&&--prefix=&$PREFIX&&\&&
&&&&--host=&${TARGET}&&\&&
&&&&--enable-debug&\&&
&&&&--disable-shared&\&&
&&&&--enable-static&\&&
&&&&--disable-macosx&\&&
&&&&--disable-macosx-defaults&\&&
&&&&--disable-macosx-vout&\&&
&&&&--disable-macosx-dialog-provider&\&&
&&&&--disable-macosx-qtcapture&\&&
&&&&--disable-macosx-eyetv&\&&
&&&&--disable-macosx-vlc-app&\&&
&&&&--with-macosx-sdk=${IO_SDK_ROOT}&\&&
&&&&--enable-audioqueue&\&&
&&&&--enable-ios-vout&\&&
&&&&--enable-avcodec&\&&
&&&&--enable-avformat&\&&
&&&&--enable-swscale&\&&
&&&&--enable-faad&\&&
&&&&--disable-mad&\&&
&&&&--disable-a52&\&&
&&&&--disable-fribidi&\&&
&&&&--disable-macosx-audio&\&&
&&&&--disable-qt4&--disable-skins2&\&&
&&&&--disable-libgcrypt&\&&
&&&&--disable-remoteosd&\&&
&&&&--disable-vcd&\&&
&&&&--disable-postproc&\&&
&&&&--disable-vlc&\&&
&&&&--disable-vlm&\&&
&&&&--disable-httpd&\&&
&&&&--disable-nls&\&&
&&&&--disable-glx&\&&
&&&&--disable-visual&\&&
&&&&--disable-lua&\&&
&&&&--disable-sse&\&&
&&&&--disable-neon&\&&
&&&&--disable-mmx&#&MMX&and&SSE&support&requires&llvm&which&is&broken&on&Simulator&&
CORE_COUNT=`sysctl&-n&machdep.cpu.core_count`&&
let&MAKE_JOBS=$CORE_COUNT+1&&
echo&&Running&make&-j$MAKE_JOBS&&&
make&-j$MAKE_JOBS&&
make&install&&
3.4. 修改总脚本(/VLC/MobileVLC/buildMobileVLC.sh),将其替换成下面这个:【注:同iOS SDK4.2。其目的只是区分和细化了simulator版本和iOS target版本的参数】
[plain]&view
#!/bin/bash&&
rm&-rf&./MediaLibraryKit/External/MobileVLCKit&&
rm&-rf&./MobileVLC/External/MobileVLCKit&&
rm&-rf&./MobileVLC/External/MediaLibraryKit&&
if&[&&$1&&=&&Simulator&&];&then&&
&&&&pushd&vlc&&
&&&&&&&&echo&&--==--&Build&for&vlc&(simulator&version)&--==--&&&
&&&&&&&&pushd&extras/package/ios&&
&&&&&&&&&&&&./build_for_iOS.sh&Simulator&&
&&&&&&&&popd&&
&&&&&&&&echo&&--==--&Build&for&vlc-MobileVLCKit&(simulator&version)&--==--&&&
&&&&&&&&pushd&projects/macosx/framework&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&Aggregate&static&plugins&&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&MobileVLCKit&&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&&&&&popd&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MediaLibraryKit&(simulator&version)&--==--&&&
&&&&pushd&MediaLibraryKit&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphonesimulator&External/MobileVLCKit&&
&&&&&&&&xcodebuild&-project&MobileMediaLibraryKit.xcodeproj&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MobileVLC&(simulator&version)&--==--&&&
&&&&pushd&MobileVLC&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphonesimulator&External/MobileVLCKit&&
&&&&&&&&ln&-s&../../MediaLibraryKit/build/Release-iphonesimulator&External/MediaLibraryKit&&
&&&&&&&&xcodebuild&-project&MobileVLC.xcodeproj&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&popd&&
&&&&pushd&vlc&&
&&&&&&&&echo&&--==--&Build&for&vlc&(os&version)&--==--&&&
&&&&&&&&pushd&extras/package/ios&&
&&&&&&&&&&&&./build_for_iOS.sh&&
&&&&&&&&popd&&
&&&&&&&&echo&&--==--&Build&for&vlc-MobileVLCKit&(os&version)&--==--&&&
&&&&&&&&pushd&projects/macosx/framework&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&Aggregate&static&plugins&&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&MobileVLCKit&&-configuration&&Release&&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&&&&&popd&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MediaLibraryKit&(os&version)&--==--&&&
&&&&pushd&MediaLibraryKit&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphoneos&External/MobileVLCKit&&
&&&&&&&&xcodebuild&-project&MobileMediaLibraryKit.xcodeproj&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MobileVLC&(os&version)&--==--&&&
&&&&pushd&MobileVLC&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphoneos&External/MobileVLCKit&&
&&&&&&&&ln&-s&../../MediaLibraryKit/build/Release-iphoneos&External/MediaLibraryKit&&
&&&&&&&&xcodebuild&-project&MobileVLC.xcodeproj&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&popd&&
3.5. 运行脚本进行编译
[plain]&view
./MobileVLC/buildMobileVLC.sh&Simulator&&
3.6. 多运行几遍保证各个编译命令都是&Build SUCCEEDED&。需要多编译几次的原因我这次看了下,好像有这几种情况
&- a) FFMPEG库打patch时出错。这个似乎不影响使用。第二次编译可以通过
&- b) faad2库下载失败。可以回看log,看下载进度是不是到了100%,如果不是,去/VLC/vlc/extras/contrib/src-i686-apple-darwin10-ios/src/目录下,将下载的faad2-x.x.tar.gz和faad2库删掉。再重新编译。别的几个库同理。下载如问题多多,有必要时请加载V-PN...
&- c) 库下载解压后再编译时环境配置不到位。这时重新编译就可以发现会新编译一些东西,然后就可以过了。应该是脚本不够完善的缘故。
然后,就应该可以在simulator下调试了。不过很雷人的是VLC在调试界面下,无法导入文件,因此也没法有效调试。不过有个同学提到过可以hardcode入流媒体的链接,这不失为一种方法。不过我没有试过。经过JianJian同学的提示,我才意识到其实很容易就可以获取VLC在Simulator环境下的工作目录,NSSearchPathForDirectoriesInDomains这个API可以获取系统目录,在VLC项目中搜索这个函数(如果没有就自己写一个),然后将输出就可以看到了。获取了Simulator环境下的App工作目录之后,将待测试的视频文件拷贝入其下的Documents目录就可以被App识别了。
四。iOS目标版本的修改过程:(Step by step for iOS device version)
4.1 将MobileVLC 1.1.0的源代码(http://www.videolan.org/vlc/download-ios.html)下载到本地
4.2 创建目录(比如/VLC),并将3个源代码包解压在目录内,并依次重命名为:MediaLibraryKit, MobileVLC,&vlc
4.3 修改MobileVLCKit(即libVLC for iOS)的脚本文件(/VLC/vlc/extras/package/ios/build_for_iOS.sh),因为有几处改动,所以不如直接拷贝我这个版本好了。【注:3处改动,一是iOS SDK的版本号,二是编译器的名称,三是加入了新的链接目录】【注2:谁知道怎么改变这个code窗口内的字体颜色和样式吗?我改了之后,显示出来成了HTML源代码】
[plain]&view
#!/bin/sh&&
echo&&Building&libvlc&for&the&iOS&&&
if&[&&$1&&=&&Simulator&&];&then&&
&&&&PLATFORM=&Simulator&&&
&&&&TARGET=&i686-apple-darwin10&&&
&&&&ARCH=&i386&&&
&&&&PLATFORM=&OS&&&
&&&&TARGET=&arm-apple-darwin10&&&
&&&&ARCH=&armv7&&&
&&&&OPTIM=&-mno-thumb&&&
THIS_SCRIPT_PATH=`pwd`/$0&&
pushd&`dirname&$0`/../../..&&
VLCROOT=`pwd`&#&Let's&make&sure&VLCROOT&is&an&absolute&path&&
DEVROOT=&/Developer/Platforms/iPhone${PLATFORM}.platform/Developer&&&
IOS_SDK_ROOT=&${DEVROOT}/SDKs/iPhone${PLATFORM}5.0.sdk&&&
BUILDDIR=${VLCROOT}/build-ios-${PLATFORM}&&
PREFIX=${VLCROOT}/install-ios-${PLATFORM}&&
IOS_GAS_PREPROCESSOR=&${VLCROOT}/extras/package/ios/resources/gas-preprocessor.pl&&&
export&AR=&${DEVROOT}/usr/bin/ar&&&
export&RANLIB=&${DEVROOT}/usr/bin/ranlib&&&
export&CFLAGS=&-isysroot&${IOS_SDK_ROOT}&-arch&${ARCH}&-miphoneos-version-min=5.0&${OPTIM}&&&
export&OBJCFLAGS=&${CFLAGS}&&&
if&[&&$PLATFORM&&=&&Simulator&&];&then&&
&&&&#&Use&the&new&ABI&on&simulator,&else&we&can't&build&&
&&&&export&OBJCFLAGS=&-fobjc-abi-version=2&-fobjc-legacy-dispatch&${OBJCFLAGS}&&&
export&CPPFLAGS=&${CFLAGS}&&&
export&CXXFLAGS=&${CFLAGS}&&&
export&CPP=&${DEVROOT}/usr/bin/llvm-cpp-4.2&&&
export&CXXCPP=&${DEVROOT}/usr/bin/llvm-cpp-4.2&&&
export&CC=&${DEVROOT}/usr/bin/llvm-gcc-4.2&&&
export&OBJC=&${DEVROOT}/usr/bin/llvm-gcc-4.2&&&
export&CXX=&${DEVROOT}/usr/bin/llvm-g++-4.2&&&
export&LD=&${DEVROOT}/usr/bin/ld&&&
export&STRIP=&${DEVROOT}/usr/bin/strip&&&
if&[&&$PLATFORM&&=&&OS&&];&then&&
&&export&LDFLAGS=&-L${IOS_SDK_ROOT}/usr/lib&-L${IOS_SDK_ROOT}/usr/lib/system&-arch&${ARCH}&&&
&&export&LDFLAGS=&-syslibroot=${IOS_SDK_ROOT}/&-arch&${ARCH}&&&
export&PATH=&/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:${VLCROOT}/extras/contrib/build/bin:${VLCROOT}/extras/package/ios/resources&&&
echo&&Boostraping&contribs&&&
pushd&${VLCROOT}/extras/contrib&&
#&contains&gas-processor.pl&&
export&PATH=$PATH:${VLCROOT}/extras/package/ios/resources&&
#&The&contrib&will&read&the&following&&
export&IOS_SDK_ROOT&&
echo&&Building&contrib&for&iOS&&&
./bootstrap&${TARGET}&ios&&
make&src&&
echo&&Building&contrib&for&current&host&&&
./bootstrap&&
if&[&&$PLATFORM&&=&&OS&&];&then&&
&&export&AS=&${IOS_GAS_PREPROCESSOR}&${CC}&&&
&&export&ASCPP=&${IOS_GAS_PREPROCESSOR}&${CC}&&&
&&export&AS=&${DEVROOT}/usr/bin/as&&&
&&export&ASCPP=&${DEVROOT}/usr/bin/as&&&
echo&&Bootstraping&vlc&&&
if&!&[&-e&${VLCROOT}/configure&];&then&&
&&&&${VLCROOT}/bootstrap&&
if&[&&.$PLATFORM&&!=&&.Simulator&&];&then&&
&&&&#&FIXME&-&Do&we&still&need&this?&&
&&&&export&AVCODEC_CFLAGS=&-I${PREFIX}include&&&
&&&&export&AVCODEC_LIBS=&-L${PREFIX}lib&-lavcodec&-lavutil&-lz&&&
&&&&export&AVFORMAT_CFLAGS=&-I${PREFIX}include&&&
&&&&export&AVFORMAT_LIBS=&-L${PREFIX}lib&-lavcodec&-lz&-lavutil&-lavformat&&&
mkdir&-p&${BUILDDIR}&&
pushd&${BUILDDIR}&&
#&Run&configure&only&upon&changes.&&
if&[&&${VLCROOT}/configure&&-nt&config.log&-o&\&&
&&&&&&${THIS_SCRIPT_PATH}&&-nt&config.log&];&then&&
CONTRIB_DIR=${VLCROOT}/extras/contrib/hosts/${TARGET}/ios&\&&
${VLCROOT}/configure&\&&
&&&&--prefix=&$PREFIX&&\&&
&&&&--host=&${TARGET}&&\&&
&&&&--enable-debug&\&&
&&&&--disable-shared&\&&
&&&&--enable-static&\&&
&&&&--disable-macosx&\&&
&&&&--disable-macosx-defaults&\&&
&&&&--disable-macosx-vout&\&&
&&&&--disable-macosx-dialog-provider&\&&
&&&&--disable-macosx-qtcapture&\&&
&&&&--disable-macosx-eyetv&\&&
&&&&--disable-macosx-vlc-app&\&&
&&&&--with-macosx-sdk=${IO_SDK_ROOT}&\&&
&&&&--enable-audioqueue&\&&
&&&&--enable-ios-vout&\&&
&&&&--enable-avcodec&\&&
&&&&--enable-avformat&\&&
&&&&--enable-swscale&\&&
&&&&--enable-faad&\&&
&&&&--disable-mad&\&&
&&&&--disable-a52&\&&
&&&&--disable-fribidi&\&&
&&&&--disable-macosx-audio&\&&
&&&&--disable-qt4&--disable-skins2&\&&
&&&&--disable-libgcrypt&\&&
&&&&--disable-remoteosd&\&&
&&&&--disable-vcd&\&&
&&&&--disable-postproc&\&&
&&&&--disable-vlc&\&&
&&&&--disable-vlm&\&&
&&&&--disable-httpd&\&&
&&&&--disable-nls&\&&
&&&&--disable-glx&\&&
&&&&--disable-visual&\&&
&&&&--disable-lua&\&&
&&&&--disable-sse&\&&
&&&&--disable-neon&\&&
&&&&--disable-mmx&#&MMX&and&SSE&support&requires&llvm&which&is&broken&on&Simulator&&
CORE_COUNT=`sysctl&-n&machdep.cpu.core_count`&&
let&MAKE_JOBS=$CORE_COUNT+1&&
echo&&Running&make&-j$MAKE_JOBS&&&
make&-j$MAKE_JOBS&&
make&install&&
4.4. 修改总脚本(/VLC/MobileVLC/buildMobileVLC.sh),将其替换成下面这个:【注:同iOS SDK4.2,也同上面的Simulator版本,其目的只是区分和细化了simulator版本和iOS target版本的参数】
[plain]&view
#!/bin/bash&&
rm&-rf&./MediaLibraryKit/External/MobileVLCKit&&
rm&-rf&./MobileVLC/External/MobileVLCKit&&
rm&-rf&./MobileVLC/External/MediaLibraryKit&&
if&[&&$1&&=&&Simulator&&];&then&&
&&&&pushd&vlc&&
&&&&&&&&echo&&--==--&Build&for&vlc&(simulator&version)&--==--&&&
&&&&&&&&pushd&extras/package/ios&&
&&&&&&&&&&&&./build_for_iOS.sh&Simulator&&
&&&&&&&&popd&&
&&&&&&&&echo&&--==--&Build&for&vlc-MobileVLCKit&(simulator&version)&--==--&&&
&&&&&&&&pushd&projects/macosx/framework&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&Aggregate&static&plugins&&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&MobileVLCKit&&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&&&&&popd&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MediaLibraryKit&(simulator&version)&--==--&&&
&&&&pushd&MediaLibraryKit&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphonesimulator&External/MobileVLCKit&&
&&&&&&&&xcodebuild&-project&MobileMediaLibraryKit.xcodeproj&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MobileVLC&(simulator&version)&--==--&&&
&&&&pushd&MobileVLC&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphonesimulator&External/MobileVLCKit&&
&&&&&&&&ln&-s&../../MediaLibraryKit/build/Release-iphonesimulator&External/MediaLibraryKit&&
&&&&&&&&xcodebuild&-project&MobileVLC.xcodeproj&-configuration&&Release&&-sdk&iphonesimulator5.0&SDKROOT=iphonesimulator5.0&VALID_ARCHS=i386&ARCHS=i386&&
&&&&popd&&
&&&&pushd&vlc&&
&&&&&&&&echo&&--==--&Build&for&vlc&(os&version)&--==--&&&
&&&&&&&&pushd&extras/package/ios&&
&&&&&&&&&&&&./build_for_iOS.sh&&
&&&&&&&&popd&&
&&&&&&&&echo&&--==--&Build&for&vlc-MobileVLCKit&(os&version)&--==--&&&
&&&&&&&&pushd&projects/macosx/framework&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&Aggregate&static&plugins&&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&
&&&&&&&&&&&&xcodebuild&-project&MobileVLCKit.xcodeproj&-target&&MobileVLCKit&&-configuration&&Release&&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&&&&&popd&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MediaLibraryKit&(os&version)&--==--&&&
&&&&pushd&MediaLibraryKit&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphoneos&External/MobileVLCKit&&
&&&&&&&&xcodebuild&-project&MobileMediaLibraryKit.xcodeproj&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&popd&&
&&&&echo&&--==--&Build&for&MobileVLC&(os&version)&--==--&&&
&&&&pushd&MobileVLC&&
&&&&&&&&ln&-s&../../vlc/projects/macosx/framework/build/Release-iphoneos&External/MobileVLCKit&&
&&&&&&&&ln&-s&../../MediaLibraryKit/build/Release-iphoneos&External/MediaLibraryKit&&
&&&&&&&&xcodebuild&-project&MobileVLC.xcodeproj&-configuration&&Release&&-sdk&iphoneos5.0&SDKROOT=iphoneos5.0&VALID_ARCHS=armv7&ARCHS=armv7&&&
&&&&popd&&
4.5 修改生成FFMpeg的config.h的Makefile文件,禁用汇编。具体原因见下面的纠错Troubleshooting章节。
Makefile位于:/VLC/vlc/extras/contrib/src目录下
改动方式:搜寻关键字“FFMPEGCONF”,使其加入&--disable-asm&参数。我的方法是在搜寻到关键字&FFMPEGCONF&的第一个地方,将
[plain]&view
FFMPEGCONF&=&&&
[plain]&view
FFMPEGCONF&=&--disable-asm&&
【注:其实改在ffmpeg编译章节那里会更合适,不过反正作用是一样的。另:由于Makefile文件太大,就不贴原文了。】
4.6&为了编译libdvbpsi库,稍稍修改iOS SDK的源文件。这是因为编译时会报错说找不到&i386/limits.h&,所以需要把这个文件拷贝到他的搜寻目录中去。具体原因见后面的纠错Troubleshotting章节。
&- a) 找到目录:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/include
&- b) 在其中新建目录:i386
&- c) 全局搜索某个i386目录下的limits.h和_limits.h文件,并将搜索到的这两个文件拷贝入刚才创建的目录中。
【注:修改系统目录,有风险!请谨慎!】
【注2:新建目录时会提示需要administrator授权,别怕,只是新加了两个文件进去而已】
【注3:在新加入的目录中,留下个人醒目标志,以后好搜索还原】
4.7. 运行脚本进行编译
[plain]&view
./MobileVLC/buildMobileVLC.sh&&
4.8. 多运行几遍保证各个编译命令都是&Build SUCCEEDED&。需要多编译几次的原因我这次看了下,好像有这几种情况
&- a) FFMPEG库打patch时出错。这个似乎不影响使用。第二次编译可以通过
&- b) faad2库下载失败。可以回看log,看下载进度是不是到了100%,如果不是,去/VLC/vlc/extras/contrib/src-arm-apple-darwin10-ios/src/目录下,将下载的faad2-x.x.tar.gz和faad2库删掉。再重新编译。别的几个库同理。下载如问题多多,有必要时请加载V-PN...
&- c) 库下载解压后再编译时环境配置不到位。这时重新编译就可以发现会新编译一些东西,然后就可以过了。应该是脚本不够完善的缘故。
然后,就可以在下载到真机进行调试了。程序下载到iOS device后,debugger会报错,然后弹窗口说调试失败,未深究原因。不过MobileVLC这时已经可以直接在iOS device里面使用了。比如我向ipad的VLC中导入了rmvb/asf/mp4/mkv类型文件各一个,均可以播放哦~如图:
【注:由于去掉了FFMpeg的汇编,据称解码效率会有比较大的牺牲】
【注2:临时找的几个视频播放都还不错,mp3放进去没反应】
五。纠错 (TroubleShooting)
1. 一些基本原因,请参考上一篇同章节:《黑苹果,iOS SDK和MobileVLC之逆旅(二) 编译MobileVLC》 (http://blog.csdn.net/madongchunqiu/article/details/6707068)
2. 关于FFMpeg基于iOS5.0的编译问题。Google上有很多相关帖子。大致有如下原因:
&- a) 链接目录不对,导致出错:“ld: in /usr/lib/system/libcache.dylib, missing required architecture armv7 in file for architecture armv7”,请参考此文:StackOverflow
- building MobileVLC -& armc7 + ffmpeg issue&(/questions/6320053/building-mobilevlc-armc7-ffmpeg-issue)
&- b) 编译器选择错误,导致出错:&ld: library not found for -lcrt1.10.6.0&。clang/gcc/llvm-gcc等等,都试了试。
&- c) 未禁用inline asm或者asm,导致gas-preprocessor.pl处理时出错。原因似乎是因为编译器和汇编的指令集32bit/64bit不一致。下面这几篇文章中有比较详细的描述:StackOverflow
- FFmpeg for iOS5&(/questions/8323672/ffmpeg-for-ios5),yuvi / gas-preprocessor issue #16&(/yuvi/gas-preprocessor/issues/16),倾情奉献ios5.0编译ffmpeg,真机ok!&(/bbs/read.php?tid=98563)
&- d) 在xcode3.2.5 / iOS SDK4.2编译环境下,FFMpeg是没有这些乱七八糟的问题的。
3. 关于libdvbpsi库的编译问题,在SDK中居然缺乏必要的文件。这个问题应该也可以通过加入新的搜索目录来实现,但是我还是野蛮了一把直接改了SDK。这篇文章里面有比较详细的说明:multiple
arch flags won't work with -E&(http://lists.macosforge.org/pipermail/macports-dev/2011-February/013745.html)
4. 关于编译中下载第三方库并进行编译时,容易出错的原因:可能是库文件包下载不完整。我有好几次下载到一半就中断下载了,或者下载了半个小时没反应。。。最后发现还是V-PN比较好用。这种问题的解决方法就是多编译几次,或者删了下载的东西再重新编译,甚或新建一个VLC目录重新开始。
六。遗留 (TO DO)
等我的iOS SDK升级到5.1,还需要试试上面的东西管不管用。当然,如果哪位仁兄能帮我试试,然后给我一点反馈就再好不过了。
然后一直以来都是编译的MobileVLC1.1.0版本,也不清楚git上面的最新MobileVLC版本会如何。不知道VLC因为license问题无法在app store上上架,是否会影响其团队在iOS平台上继续开发。
我大概几个月后,会写一篇关于自制VLC实现个人&隐私&视频库的文章,希望到时候这些问题都能得到解决。
【注:其实自从发现truecrypt后,这个项目的意义就不大了。
传统加解密方式:优点-安全;缺点-每次回放前都需要解密;
truetype方式:优点-安全,一次性加密,实时回放;缺点-需要加载成虚拟盘;
自制VLC;优点-一次性加密,回放时实时解密;缺点-现在采用的不是常规加密方式,而只是加扰,故而几乎不可谈其安全性。不过总还是有实用价值的】
七。给读者的话 (Tips)
近来越来越多的收到读者来信,让我帮忙看看编译log找出问题。我把这些问题总结后发在下面的文章中了。如果你也在编译中有所苦恼的话,请看这里:
编译MobileVLC时,可能会用到的一些编译调试技巧集合(Mac)(http://blog.csdn.net/madongchunqiu/article/details/7931267)
八。参考文章 (References)
1.&StackOverflow - building MobileVLC -& armc7 + ffmpeg issue(/questions/6320053/building-mobilevlc-armc7-ffmpeg-issue)
2.&StackOverflow - FFmpeg for iOS5&(/questions/8323672/ffmpeg-for-ios5)
3.&yuvi / gas-preprocessor issue #16&(/yuvi/gas-preprocessor/issues/16)
4.&倾情奉献ios5.0编译ffmpeg,真机ok!(/bbs/read.php?tid=98563)
5.&multiple arch flags won't work with -E&(http://lists.macosforge.org/pipermail/macports-dev/2011-February/013745.html)
九。其它 (More)
我今天()才发现原来CSDN里多了好些&私信&,以前都没注意到有这个功能,所以都没有查看,更遑论回复,还请见谅。不过请不要再给我发&私信&了,因为要登录查看,感觉特麻烦,我一般是不会去查看的。有问题还请直接在文章后面留言,或者发邮件到我的信箱:,这两者都有消息推送,我即使不登录CSDN也可以收到的,方便很多。
注:有谁知道csdn的code那个框里面的文字如何改色和高亮吗?我改了之后,出来时变成了HTML Script的文字效果了。。。
文章评论 以下网友留言只代表其个人观点,不代表本网站的观点和立场。

我要回帖

更多关于 iphone5s哪个系统最好 的文章

 

随机推荐