0

アセット ライブラリからサイズ 100 MB の動画をアップロードしようとしています。しかし、使用しようとする-(NSUInteger)getBytes:(uint8_t *)buffer fromOffset:(long long)offset length:(NSUInteger)length error:(NSError **)errorALAssetRepresentation、メモリがいっぱいのエラーが発生します。データをバッファに入れる必要もありますNSData。どうすればそれを達成できますか?

4

3 に答える 3

2

私はこの方法を試しました:

Byte *buffer = (Byte*)malloc(asset.defaultRepresentation.size);

NSUInteger k = [asset.defaultRepresentation getBytes:buffer fromOffset: 0.0
                length:asset.defaultRepresentation.size error:nil];

NSData *adata = NSData *adata = [NSData dataWithBytesNoCopy:buffer
                                 length:j freeWhenDone:YES];    

それは実際に動作します!

于 2010-12-22T11:28:31.170 に答える
0

@autoreleasepool ブロッ​​クを追加して、自動リリースされたオブジェクトをクリーンアップする必要があります。ARCはiOS7以降に何か変更されたようです

@autoreleasepool {
     NSUInteger readStatus = [rep getBytes:buffer fromOffset:_startFromByte length:chunkSize error:NULL];
}
于 2015-06-15T04:48:32.587 に答える