序章
私は現在、Vimeoのスタイルのアプリケーションでいくつかのバグ修正を行っています。つまり、ユーザーは電話またはiPadからビデオを録画し、他のユーザーが見ることができるようにビデオをアップロードできます。現在の問題は、現在のアップロードの処理方法が原因で、大きなファイルのアップロードに関係しています。
問題
したがって、問題は基本的に、サーバーにファイルをアップロードするときに、NSDataオブジェクトにアップロードする必要のあるすべてのバイトを最初に割り当てることです。このバイト文字列は、標準のHTTP Postメッセージに添付され、受信APIがそれを処理します。問題は、ファイルサイズが大きい場合(ビデオはすぐになります)、NSDataオブジェクトがiDeviceで大量のメモリを消費するため、アプリが単にクラッシュすることです。
プロセスは次のように機能します。
Byte *buffer = malloc(content.defaultRepresentation.size);
NSUInteger buffered = [content.defaultRepresentation getBytes:buffer fromOffset:0.0 length:content.defaultRepresentation.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered];
NSData *movieData = [NSData dataWithData:data];
iPhoneまたはiPadの標準カメラロールに保存されているビデオからバイトを取得するだけです。次に、これらのバイトをNSDataオブジェクトに入れます。このNSDataオブジェクトのバイト文字列は、単純なHTTP POSTメッセージに添付され、APIに送信されます。
質問
問題は、そして私が見る問題は、バイト文字列全体を単一のHTTPPostメッセージで送信する必要があるということです。それで、ムービーファイルのチャンクをロードして投稿メッセージに追加して、一度に多くのメモリを消費しないようにする方法はありますか?または、どうすればこれを行うことができますか?
お時間をいただきありがとうございます:)