簡體   English   中英

如何使用AVCaptureVideoDataOutput處理錯誤並獲取當前錄制的視頻大小?

[英]How to handle error and get current recording video size using AVCaptureVideoDataOutput ?

我使用AVCaptureVideoDataOutput錄制視頻,因為我需要視頻和音頻幀。 記錄時如何處理錯誤,例如“無磁盤空間” /“記錄停止”。 在使用AVCaptureMovieFileOutput進行記錄時,我們可以得到以下錯誤:

func captureOutput(captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!, fromConnections connections: [AnyObject]!, error: NSError!)

以及我們如何跟蹤或獲取當前錄制視頻的視頻文件大小。 使用AVCaptureMovieFileOutput,我們可以通過在“ startRecording”委托中保留“ AVCaptureFileOutput”的引用來獲取錄制時視頻的大小。

您將需要符合AVCaptureVideoDataOutputSampleBufferDelegateAVCaptureVideoDataOutput並使用一個稱為captureOutput(_:didOutput:from:) 當新的視頻幀已寫入以及從哪個連接寫入時,此方法將通知您的代表。 從此方法內部,我將讀取輸出的緩沖區大小 ,然后將其與磁盤上的可用空間進行比較:

if let systemAttributes = try? FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String) {
    if let availableSpace = systemAttributes[FileAttributeKey.systemFreeSize] as? NSNumber {
        print("Available Space \(availableSpace.int64Value)")
    }
}

這樣,無論何時AVCaptureVideoDataOutput輸出視頻幀,您都將收到通知,並且如果錄制的大小接近磁盤上可用空間的閾值,則可以停止錄制並提醒用戶它們的空間不足。他們的視頻。

暫無
暫無

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

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