如何获取巨大视频文件的切片数据

时间:2012-05-16 06:58:52

标签: iphone objective-c ios cocoa-touch nsdata

我想将视频文件加载到NSData中,如果我使用dataWithContentsOfFile :,当文件太大时会占用大量内存。 如何获取具有偏移量和长度的文件的特定数据。 我需要将视频文件分段上传。

3 个答案:

答案 0 :(得分:1)

NSData *data = [NSData dataWithContentsOfMappedFile:<path>];
NSRange first4k = {0, MIN([data length], 4096)};
return [data subdataWithRange:first4k];

只提供文件的前4k而不加载所有文件。

但是在iOS5中不推荐使用dataWithContentsOfMappedFile:

我想 - 警告:未经测试! -

+ (id)dataWithContentsOfURL:(NSURL *)aURL options:(NSDataReadingOptions)mask error:(NSError **)errorPtr

将掩码设置为

NSDataReadingMappedIfSafe

NSDataReadingMappedAlways

也应该完成这项工作。

Butn在iOS5中是新的。

答案 1 :(得分:1)

您可以使用NSFileHandle然后使用seekToFileOffset:进行搜索,并使用readDataOfLength:读取大量数据。

答案 2 :(得分:0)

这篇文章可能有助于Cocoa is my Girlfriend

  

几个星期前,Matt Long在应用程序内存不足时出现问题。他有一个他需要加载和处理的巨大数据文件,而且内存命中率超过了应用程序所能承受的程度。它可以很好地加载到NSData中,但在他完成它之前,应用程序会缺少内存并死掉。