[英]Recording Video Using AVCaptureVideoDataOutput at Swift 3
[英]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”的引用來獲取錄制時視頻的大小。
您將需要符合AVCaptureVideoDataOutputSampleBufferDelegate
的AVCaptureVideoDataOutput
並使用一個稱為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.