手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:ios

知识点: RAD Studio XE2新特性概览:多平台支持、原生iOS与Android、HD与3D动画及云

本文只是一个知识点,主要是Vampire和我说delphi可以开发原生IOS应用了,所以我觉得很奇怪就找了找资料,随手就把这篇infoQ的文章贴了出来。当然我的delphi是一塌糊涂,不过bobby和mpeg就不一样了,他们曾经靠这吃过饭 ,所以他们开发IOS就方便了。
嗯 ,原文在这里:http://www.infoq.com/cn/news/2011/09/RAD-Studio-XE2

继去年8月30日发布XE产品线到现在已经过去一年多的时间了,Embarcadero正准备发布其新版本的RAD Studio XE2工 具,其中包含了Delphi XE2、C++Builder XE2、RADPHP XE2及Prism XE2。此次发布带有很多新特性,最引入关注的莫过于对跨平台开发、Windows 64位、Amazon Cloud API、Native Android与iOS及HD与3D动画的支持了。

长久以来,众多Windows开发者都在使用Delphi与C++Builder针对微软平台创建应用,但现在他们也将目光瞄向了Mac OS X。其IDE并不能运行在Mac上,但编译器所生成的库则可以通过网络安装并运行在Mac计算机上,这样同一套源文件就会有两个应用库了。Delphi支 持Windows 64位,包含一个调试器和部署管理器。

Delphi与C++Builder还带有FireMonkey,这是一个新的平台,用于针对Windows、Mac OS X与iOS创建HD与3D动画。这些原生应用利用CPU与GPU来绘制动画,并且可以通过LiveBindings与任意数据类型进行连接。

Delphi与C++Builder应用可以部署到Amazon EC2与Windows Azure上,同时支持Amazon Simple Storage Service API、Queue Service与SimpleDB。

RADPHP现在则瞄准了iOS与Android设备,能以可视化的形式展现出应用在各个移动设备上的样子。开发人员还可以从PHP生成针对这些平台的原生应用。RADPHP使用了jQuery Mobile控件来设计界面。

除了对原有特性的增强外,Delphi Prism还增加了不少新特性,如下所示:

  • 全新的Oxygene Compiler 5.0
  • 编辑器可以显示出错误的详细信息、范围以及说明
  • 代码编辑器可以即时显示出编译错误
  • 针对选定的新错误的修复支持
  • 语言软接口与鸭子类型
  • 匿名接口实现
  • 增强的Oxidizer集成

资源:感兴趣的读者可以在这里查看RAD Studio XE2中更加完整的增强列表。

查看英文原文:New in RAD Studio XE2: Multiplatform, Native iOS&Android, HD&3D Animation, and Cloud

--------
对于XE最早的了解还是来自于delphi4php可惜那个项目实在让人失望,不知道这次这个怎么样

Tags: macosx, delphi, ios, android

资料备份:ios(苹果)设备直播流媒体 服务搭建

由于公司的规划,在未来的一段时间内可能会给ipad用户提供流媒体的播放服务,因此,在服务器上架设流媒体服务器就已经被我提上了日程。找了不少资料,发现这一篇还算是相对不错的。
原文地址是:http://www.aojie.biz/902
原文内容:

iOS设备上要用原生的浏览器或者播放器来跑直播流媒体,确实是有点费周折,不过找对了软件和方法就相对容易许多。收集了一下关于iOS设备上搭建直播流媒体服务器的一些解决方案,如下:

1、凤雨小城,HLS 简介,http://www.vexx.cn/blog/read.php?240

2、dancong , wowza服务器无法将RTMP的流播放到iOS上(已解决),http://www.cocoachina.com/bbs/read.php?tid-47849.html

HLS简介 – rainstown (小城秋雨)

HLS(HTTP Live Streaming)是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方案。
在 HLS 技术中 Web 服务器向客户端提供接近实时的音视频流。但在使用的过程中是使用的标准的 HTTP 协议,所以这时,只要使用 HLS 的技术,就能在普通的 HTTP 的应用上直接提供点播和直播。
在App Store中的视频相关的应用,基本都是应用的此种技术。
该技术基本原理是将视频文件或视频流切分成小片(ts)并建立索引文件(m3u8)。支持的视频流编码为H.264,音频流编码为AAC。
m3u8文件示例:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:10,

http://192.168.1.36/vod/tt/tt-1.ts

#EXTINF:10,

http://192.168.1.36/vod/tt/tt-2.ts

#EXTINF:10,

http://192.168.1.36/vod/tt/tt-3.ts

#EXT-X-ENDLIST
可以在iOS或Mac OS上通过quicktime或safari(其实还是调用quicktime)来进行播放。
下面分点播和直播分别进行一下介绍。
点播:
苹果官方提供了Segmenter软件,参数如下:

segmenter <input MPEG-TS file> <segment duration in seconds> <output MPEG-TS file prefix> <output m3u8 index file> <http prefix>

示例:
segmenter youku.m2ts 10 tt/tt index.m3u8 http://192.168.1.36/vod/
注意:输入文件必须为MPEG2TS格式。对我们的mp4文件来说,必须先进行一次容器格式转换才能进行分割。分割命令:
ffmpeg -i youku.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb youku.m2ts
我们下一阶段要做的视频分割项目,针对iOS平台的播放,可以考虑采用此种方式。只是若如此做,存储成本会加倍.。
直播:
客户端软件推送H.264视频流和AAC音频流到服务器软件,服务器软件将接收到的流每缓存一定时间后包装为一个新的ts文件,然后更新m3u8文件.。 m3u8文件中只保留最新的几个片段的索引,以保证观众任何时候连接进来都会看到较新的内容,实现近似直播的效果。这种方式的理论最小延时为一个ts文件 的时长,一般为2-3个ts文件的时长。
苹果没有官方的HLS直播服务器软件和客户端软件。其它第三方公司的产品有:
·  TVersity
·  Helix Universal Server
·  Wowza Media Server
·  VLC Media Player version 1.2
我采用Helix Universal Server和Helix Producer(客户端软件)进行了直播测试。
若要做针对iOS平台的直播,目前来看,只能采用此种方式。但在其它平台(除了iOS和Mac之外)上无法观看直播,也决定了此种直播方式的应用场景暂时具有相当的局限性,只能作为常规直播方式的一种补充。

wowza服务器无法将RTMP的流播放到iOS上(已解决)

我现在需要将本地Macbook的rtmp的视频流直播到iOS上,准备采用wowza作为服务器。

我按照这个教程用FlashMediaLiveEncoder 3.2 采集本机的iSight视频后,按视频H.264, Baseline 3.0, 音频 AAC为格式输出rtmp协议的流。

复制代码
  1. FMS URL里填rtmp://localhost:1935/live
  2. Stream里填mp4:myStream

我在本地按wowza官方的配置方法配完后,Mac OS X 网页上可以用jwplayer直接以:

复制代码
  1. var flashvars = {
  2. file:’myStream’,
  3. streamer:’rtmp://localhost/live/’
  4. };

这种方式播放rtmp流,说明wowza已经接收到rtmp流了。

问题是,用iOS访问“http://localhost:1935/live/myStream.sdp/playlist.m3u8”,结果iOS虽然出现播放界面,但是报错“File not found”,查看wowza控制台报错,说:

复制代码
  1. INFO stream create myStream.sdp -
  2. WARN server comment – HTTPStreamerAdapterCupertinoStreaming.getAppInstance: Stream not found [live/myStream.sdp/playlist.m3u8]: myStream.sdp
  3. WARN server comment – HTTPStreamerAdapterCupertinoStreaming.getAppInstance: Stream not found [live/myStream.sdp/playlist.m3u8]: myStream.sdp
  4. INFO stream destroy myStream.sdp -

说明访问到了wowza,但是wowza无法将rtmp流转成myStream。

我看过了Apple官方的HTTP live stream的文档,说需要segmenter将视频流切分成多个ts的视频文件和m3u8的播放列表,我觉得这些都是wowza负责实现的。

请问如何配置wowza才能将rtmp流转成Apple HTTP live stream。

另外,虽然wowza要求SDP文件,但是我不知道怎么生成SDP文件,而且网上有人说不用SDP文件也可以。是因为这个SDP缺失导致的吗?如何生成SDP?

解决方案:
根本不用生成SDP。
原来是iOS上的访问地址被官方误导了,晕死,官网上的竟然是错的。URL里不需要写“.sdp”,应该是http://localhost:1935/live/myStream/playlist.m3u8就可以了。

---------
最后一句超有意思。。
官方的文档应该是这个:http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008332-CH1-DontLinkElementID_31

Tags: 流媒体, ios, fms

转:ios拷贝小议

纯记录,目前我还没有学到这里。
看到这样的文章,就先记录下来,以后不怕网址不在了。。。

1.copy vs mutableCopy

copy,对于不可变的对象,简单的指向其内存.对于可变对象,复制内存内容到新的内存中并把新的内存值赋值给左值.

mutableCopy,始终复制到新的内存中,以一个可变的类型赋值给左值.

大小: 47.27 K
尺寸: 471 x 278
浏览: 1347 次
点击打开新窗口浏览全图

2.copy vc retain

retain,引用计数+1,内存地址赋值给左值.

copy,对于不可变对象的,相当于retain;对于可变对象,则是深拷贝赋值.

C++代码
  1. NSString* a = [NSString stringWithFormat:@"%@",@"this is a"];  
  2.   
  3. NSString* b = [a copy];  
  4.   
  5. NSString* bb = [a retain];  
  6.   
  7. NSString* cc = [a mutableCopy];//实际上cc应该是NSMutableString类型  
  8.   
  9. NSLog(@"%d,%d,%d,%d",[a retainCount],[b retainCount],[bb retainCount],[cc retainCount]);  
  10.   
  11. 3,3,3,1  
  12.   
  13. NSMutableString* a = [NSMutableString stringWithFormat:@"%@",@"this is a"];  
  14.   
  15. NSString* b = [a copy];//不可变的b  
  16.   
  17. NSString* bb = [a retain];//实际类型是NSMutableString的bb  
  18.   
  19. NSString* cc = [a mutableCopy];//同上  
  20.   
  21. NSLog(@"%d,%d,%d,%d",[a retainCount],[b retainCount],[bb retainCount],[cc retainCount]);  
  22.   
  23. 2,1,2,1  

 

3.一些问题

通过上面2点,思考下面的问题

我们通常如果这样定义一个变量

@property(nonatomic,copy)  NSMutableString* mString;

然后这样使用

@synthesize mString;
NSMutableString* a = [NSMutableString stringWithFormat:@"%@",@"this is a"];
self.mString = a;
[mString insertString:@"m-" atIndex:0];

能通过么?当然不能,赋值后的mString是NSString类型的,不可变.如果需要可以改变就需要自己定义属性函数.

-(void)setMString:(NSMutableString *)m
{
mString = [m mutableCopy];
}

-(NSMutableString *)mString
{
return mString;
}

(当然,NSMutableString不是线程安全的,一般都建议私有之:@private;或者一定要用的话以NSString作为对外接口类型)

4.NSCopying NSMutableCopying NSCopyObjective()

NSCopying就是复制一个对象

NSMutableCopying就是深拷贝一个对象,让两个对象的改变互不影响

(其实上面着两个完全看你怎么写啦)

NSCopyObject(self,0,zone)就是简单的赋值=

(在涉及到ns对象的时候,NSCopyObject不建议使用)

注意看下面一个例子:

@interface ClassB : NSObject <NSCopying>{
NSString* stringB;
}
@property(nonatomic,copy) NSString* stringB;
@end
-(id)copyWithZone:(NSZone *)zone
{
ClassB *b = NSCopyObject(self, 0, zone);
// 使用NSCopyObject时的正确赋值方法,因为没有涉及到原来的内存指针什么事
b->stringB = @"what";
// 看看被注释的这个错误方法,犹豫setter方法的特性,原来的stringB的retainCount减一
// 而犹豫NSCopyObject的特性,两者又是指向同一个地址的,所以,原类中stirngB已经释放了,玩了你dealloc中在释放一次?!.就出错啦
// b.stringB = @"what";
return b;
}

参考:http://stackoverflow.com/questions/2002174/copy-mutablecopy

http://stackoverflow.com/questions/4995254/nsmutablestring-as-retain-copy

http://robnapier.net/blog/implementing-nscopying-439#comment-1312
注释:可变对象mutable比如NSMutableString,NSMutableArray等
       不可变对象immutable比如NSString,NSArray等


-----EOF--
原文来自:http://www.cnblogs.com/v2m_/archive/2011/10/12/2208684.html
作者:v2m

Tags: ios, 拷贝

笔记:IOS发送图片的时候,还是用的$_FILES

纯笔记:
在与IOS交互的时候,采用了POST发送数据,同事说需要发送一张图片,于是我直接用$_POST进行获取,发现该字段无值。打印整个$_POST的时候,连这个key都没有找到
于是我在想,php://input有没有值呢?试了一下也没有,其实想想也是,如果真是用Base64处理后的发给我。我也应该是可以通过 $_POST收到的。
不过,还没有尝试这种:

PHP代码
  1. preg_match('/attachment;\s+name="(.+?)";\s+filename="(.+?)"/i'$_SERVER['HTTP_CONTENT_DISPOSITION'], $info)  

这种是HTML5上传了,不过我没有试过。。。
我看了一下同事以前的代码,发现是用$_FILES的,于是很方便的套了几行代码就一切都OK了。。
看来,脑子还是不能乱。

Tags: ios

ipad ,ios 4.2

先发个牢骚,我想要苹果我想要苹果。不是那个苹果是那个苹果。you know.....
只是每次申请经费都被上级领导驳回,只能在这里发发牢骚。

昨天参加thinkinlamp的时候有人告诉我,现在ios是4.2了。。这才发现,原来我的ipad在我手里的应用真的很简单的,除了看pdf就是看pdf,当然偶尔也会玩玩所谓的愤怒的小鸟啦之类的小游戏。4。2对我来说有用没?看到功能列表就觉得,升级是必要的,这主要有以下几个原因:1、ipad上的软件删除不掉了。。。2、多任务。至少可以在看网页的时候也能QQ了(装B用)。3、图标合并,这个还是较为有用的。比如把游戏归类,把软件归类等4、那可怜变态升级心理,见不得有软件更新。。。

OK,贴出那所有的更新列表吧。。

  1、支持多任务。在适用于iPad的iOS4.2中,开始支持多任务。iPad可以像iPhone 4和iPod touch 4那样,在后台运行多任务和通过连按Home键来调出多任务管理Bar。

   2、 应用图标合并功能。这个功能就是iPhone版本上iOS 4中的文件夹式图标管理功能,在iPad上将一个图标拖拽到另一个图标上,系统会自动创建文件夹。这项功能可让iPad用户跟iPhone 4一样轻松地分类管理应用,使iPad的屏幕变得整齐有序。不过与iPhone和iPod touch不同的是,iPad的大屏幕使得这个文件夹可以容纳20个应用图标,而iPhone和iPod touch则只能容纳12个。

  3、AirPrint无线打印功能。其实这次iOS 4.2的更新中最受大家关注的就是AirPrint无线打印功能。如今的iPad、iPhone和iPodtouch设备上的默认程序都已经添加了无线打印功能。

  4、AirPlay功能。AirPlay技术不仅支持音乐播放,还允许用户通过Wi-Fi播放视频和相片。

  5、Gamecenter。从iOS 4.2开始,iPad用户也可以使用苹果的社交网络游戏中心了,在Gamecenter里,iPad用户可以邀请好友一起游戏,对比得分和成就。

  6、新的Spotlight选项。在设置的Spotlight搜索功能栏,苹果添加了更多的选项,搜索结果选择显示以下内容:联系人、应用程序、音乐、播客、视频、有声读物、备忘录、邮件和事件。用户还可以重新排列这些内容分类,设置搜索结果按照新的类别顺序显示。

  7、全新的限制规则。除了允许或不允许GameCenter的多玩家模式外,iOS 4.2的iPad版本可以让用户选择是否允许定位设置和Mail帐号设置的更改;对于iPad 3G,用户还可以选择是否禁用3G网络和恢复EDGE。

  8、新增拼写检查功能。在iOS 4.2系统下,iPad也具有拼写检查功能,用户可以选择打开或关闭。

  9、增强的显示设置。iPad版的iOS 4.2支持更大的字体显示,以方便视力有障碍的用户或者老年人,字体大小可设置20pt、24pt、32pt、40pt、48pt、56pt。

  10、新的备忘录偏好设置。iPad的备忘录有三种字体可选择:Chalkboard、Helvetica和MarkerFelt。用户还可以设置一个备忘录绑定默认邮箱帐号。

  11、屏幕方向锁定键和亮度调节。iPad可以将屏幕方向锁定键转变成静音键,另外还在小工具的左边添加了一个屏幕亮度调节的滑动条。

  12、统一关联的邮箱。iPad用户现在可以在Mail偏好设置中管理关联邮箱,跟iPhone和iPod touch一样,iPad收件箱邮件可自动整合到一个窗口,使用户提高效率,节省时间。

  13、iAd。iAd互动广告也将出现在iPad,开发者自此可以将iAd广告集成到iPad软件中。

从和讯网COPY而来:http://tech.hexun.com/2010-11-08/125496638.html,准备升级(刚刚下载了itunes。。。HOHO)

后记:下载了itunes10,结果安装后还是itunes8,然后不停的升级。。直到9.2,就再也升不上去了。于是换成英文版,点升级(同时翻墙),OK,终于更新成10(原来在中文版时,一直显示更新成10成功了,可是打开的时候,还是9.。真TMD妖)不过即使是这样,我打开itunes的时候,还是提示我有3.2.2升级没有4.2, 4.2在哪里?我好惊讶

Tags: ipad, ios, apple

Records:15123