目標:使用AVCaptureMovieFileOutput
將視頻記錄到.mov文件。在錄製視頻時,我想將其上傳到S3。上傳部分應該可以通過多部分上傳來實現。 (Mac OS X的應用程序+10.8)在用AVCaptureMovieFileOutput寫入時使用NSInputStream讀取.mov文件
問題: 如何從塊.mov文件讀取,而該文件被寫入與AVCaptureMovieFileOutput
和尺寸變大?
我做了什麼至今:
// session = AVCaptureSession with audio and video inputs
fileOutput = [[AVCaptureSession alloc] init];
[session addOutput:fileOutput]
[session startRunning]
[fileOutput startRecordingToOutputFileURL: fileUrl recordingDelegate:self]
// In async dispatch queue
inputStream = [NSInputStream inputStreamWithFileAtPath:fileUrl]
// schedule in run loop, open and run
在這一點上,我開始接收與NSStreamEventHasBytesAvailable
委託對象stream:handleEvent:
消息。但幾秒鐘後,消息停止進入(在250.000-300.000字節(0.2MB)的總字節數後)即使.mov文件的大小增大到> 10MB,也會發生這種情況。
問題:
爲什麼
NSInputStream
代表不繼續接收流事件?最初可用的數據不可靠嗎?
這是總體上可行的方法嗎?或者有另一種實現我想要的方式嗎?
謝謝!
感謝您的意見,Geraint。在文章中提到文件中沒有包含任何音頻。在我的情況下,有音頻記錄到文件。這是否使它不可能?謝謝 –
如果你只是想在錄製文件的時候複製文件,我認爲應該沒問題。您不需要解釋它,只需複製已寫入的部分即可。您需要小心:當文件關閉時,mdat塊的大小將會更新。大多數情況下,該文件應該按順序編寫。我的示例展示瞭如何在編碼時使用編碼的視頻數據:爲此,您需要單獨編寫音頻(也許自己重新配置,僅使用硬件進行視頻編碼)。 –
好的,如果我理解正確,你的代碼示例(雖然有趣)不是那麼相關?我需要寫入磁盤的.mov文件的完整副本。你專注於將視頻流式傳輸到另一個單元? –