簡體   English   中英

AVAssetWriter文件備份和恢復

[英]AVAssetWriter file backup and recovery

我正在使用AVAssetWriter將音頻(和/或視頻)寫入快速時間電影格式。 如何定期(每兩分鍾)保存(或備份)此文件而不停止會話(即繼續記錄)?

這是我在錄制期間用於復制文件的代碼:

NSString* filename = [NSString stringWithFormat:@"mediaFile.mp4"];
NSString* path = [NSTemporaryDirectory() stringByAppendingPathComponent:filename];
NSURL* existingURL = [NSURL fileURLWithPath:path];

path = [myAppDocumentsDirectory stringByAppendingPathComponent:filename];
NSURL* copyURL = [NSURL fileURLWithPath:path];

[[NSFileManager defaultManager] copyItemAtURL:existingURL toURL:copyURL error:nil];

該文件已創建,但似乎無法讀取,除非我調用以下命令:

[assetWriter finishWritingWithCompletionHandler: handler];

那么,在仍然記錄的同時備份文件的機制是什么? 似乎沒有一種方法可以調用finishWritingWithCompletionHandler,然后在同一文件上附加一個新會話(即,沒有可以找到的暫停,保存,恢復機制)。 也許有一種方法可以在復制后正確關閉或“完成”文件?

如果需要用例,則可能是由於電池電量不足或系統崩潰而導致系統關閉了應用程序的情況。 然后,重新啟動應用程序應允許用戶恢復此文件並進行播放。

我找到了解決方案。 開始錄制之前,您必須先編寫此代碼。 這將在每個時間間隔內保存文件。 然后,如果您的應用程序崩潰,視頻將可以播放。

[_assetWriter setMovieFragmentInterval:CMTimeMake(1, 600)];

在Swift中:

_assetWriter?.movieFragmentInterval = CMTime(value: 1, timescale: 600)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM