2012-10-17 58 views
2

我使用AVFoundation使用以下方法將視頻錄製到NSTemporaryDirectory。使用AVFoundation錄製的視頻可以直接寫入資產庫嗎?

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

一旦錄製停止

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

方法被調用。

我注意到,雖然視頻正在從臨時目錄寫入照片庫,但它仍保留在那裏直到保存完成。

這對我來說沒有意義,因爲它會在保存視頻時創建兩倍的磁盤空間。例如,如果我錄製長達一小時的1080p視頻,則在錄製結束時磁盤上的大小爲5GB,但在臨時文件被刪除並釋放磁盤空間之前,在保存到照片庫時會增加到10GB。

很想聽聽你對此的想法。

回答

0

我認爲,最好暫時將視頻存儲到文檔目錄中作爲.mp4

然後保存到文檔目錄並保存後刪除它。

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; 

} 
相關問題