2014-11-05 95 views

回答

23

我發現解決方案爲an answer to a completely different question

問題是AVCaptureMovieFileOutput中的movieFragmentInterval屬性。

此屬性的文檔解釋什麼這些片段有:

QuickTime電影是由媒體樣本的和試樣臺 標識所述文件中其位置。沒有示例 表的電影文件不可讀。

在處理的文件中,示例表通常出現在文件的起始處 處。它也可能出現在文件的末尾,在 這種情況下,頭部包含一個指向 末端的樣本表的指針。當正在記錄新的電影文件時,由於文件的大小尚未知道,因此不可能 寫入示例表。 而是,記錄完成時必須寫入表格。如果 沒有采取其他操作,這意味着如果記錄不成功(例如,在發生崩潰時) 數據不可用(因爲沒有樣本表)。通過定期向電影文件插入「電影片段」 ,可以遞增地構建示例表格 。這意味着如果文件沒有完全寫入 ,電影文件仍然可用(直到寫入最後一個片段的位置)。

它還說:

默認爲10秒。設置爲kCMTimeInvalid以禁用片段寫入(通常不推薦) 片段寫入。

因此,出於某種原因,我的錄音在編寫片段時會越來越混亂。我剛剛添加了行movieFileOutput.movieFragmentInterval = kCMTimeInvalid;(其中movieFileOutput是我添加到AVCaptureSession的AVCaptureMovieFileOutput)來禁用片段寫入,並且音頻現在可以工作。

2

正在更新videoFileOutput.movieFragmentInterval = kCMTimeInvalid爲我解決了這個問題。

但是,我在撥打startRecordingToOutputFileURL後意外設置了movieFragmentInterval。一個小時後,我意識到自己的錯誤。對於像我這樣的新手,注意這個明顯的序列

videoFileOutput.movieFragmentInterval = kCMTimeInvalid 
videoFileOutput.startRecordingToOutputFileURL(filePath, recordingDelegate: recordingDelegate) 
2

我們也遇到過這個問題。基本上禁用電影片段的寫作會起作用,但並不能真正解釋問題。很可能您正在使用不支持此功能的文件擴展名錄制到輸出文件,如mp4。如果您傳遞擴展名爲mov的輸出文件,則使用電影片段寫入時應該沒有問題,並且輸出文件將具有音頻。

相關問題