我已经实现了使用多部分文章将视频上传到youtube等方式,或将视频保存到本地的相机卷。但是,对于大型视频,由于内存占用太大,我会受到监视,因为目前我必须将整个视频存储在内存中才能发布或保存。上传或导出大视频会导致内存不足并导致崩溃......我该如何分解它?
什么是我可以采取一个大的视频分解成可管理的块的步骤是什么?
我已经实现了使用多部分文章将视频上传到youtube等方式,或将视频保存到本地的相机卷。但是,对于大型视频,由于内存占用太大,我会受到监视,因为目前我必须将整个视频存储在内存中才能发布或保存。上传或导出大视频会导致内存不足并导致崩溃......我该如何分解它?
什么是我可以采取一个大的视频分解成可管理的块的步骤是什么?
您可以将视频保存到一个文件,并使用nsstream读取视频数据块,并送他们,你就必须保持一定的状态要记住什么ü发送,还剩下些什么,但它不应该是太糟糕执行,例如
BOOL done=FALSE;
NSInputStream *stream=nil;
NSString *[email protected]"..."; //your file path
stream=[[NSInputStream alloc] initWithFileAtPath:myFile ];
while(!done)
{
int chunkSize=500000; //500 kb chunks
uint8_t buf[chunkSize];
//reads into the buffer and returns size read
NSInteger size=[stream read:buf maxLength:chunkSize];
NSLog(@"read %d bytes)", size);
NSData * datum=[[NSData alloc] initWithBytes:buf length:size];
//when we actually read something thats less than our chunk size we are done
if(size<chunkSize)
done=TRUE;
//send data
}
您是否使用HTTP库,如ASIHTTPRequest,或者你在自己动手? –
我目前没有使用ASIHTTPRequest。 – akaru
我假设你自己在做这个。我唯一能想到的其他事情就是使用内存映射文件。如[此](http://stackoverflow.com/questions/6172919/ios-memory-mapped-files-and-low-memory-scenarios) –