4

以下の方法を使用して、AVFoundationを使用してNSTemporaryDirectoryにビデオを録画しています。

[[self movieFileOutput] startRecordingToOutputFileURL:[self outputFileURL] recordingDelegate:self];

録音が停止したら、

[library writeVideoAtPathToSavedPhotosAlbum:outputFileURLcompletionBlock:^(NSURL *assetURL, NSError *error)`

メソッドが呼び出されます。

ビデオが一時ディレクトリからフォトライブラリに書き込まれている間、保存が完了するまでそこに保持されていることに気づきました。

ビデオの保存中にディスク容量を2倍にする必要があるため、これは私には意味がありません。たとえば、1時間の長さの1080pビデオを録画する場合、ディスクのサイズは録画の最後に5GBですが、一時ファイルが削除されてディスク領域が解放される前に、写真ライブラリに保存している間は最大10GBになります。

これについてのあなたの考えを聞いてみたいです。

4

2 に答える 2

0

動画を Document-directory に一時的に.mp4として保存する方がよいと思います。

次に、Document-directory に保存し、保存後に削除します。

NSString *videoPath = [[self getDirectoryPath:[NSString stringWithUTF8String:currentRequest.fileName]] retain];

 NSURL *videoPathURL = [NSURL URLWithString:videoPath];                 

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];  

[library writeVideoAtPathToSavedPhotosAlbum:videoPathURL completionBlock:^(NSURL *assetURL, NSError *error) { 

       //Delete "videoPath" file from Document directory

}]; 


-(NSString *)getDirectoryPath:(NSString *)fileName {        

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4",fileName]];
    return path;

}
于 2012-12-05T08:10:24.987 に答える