我正在使用AVCaptureSession錄製帶有音頻的視頻。一切似乎都適用於短視頻,但出於某種原因,如果我錄製的視頻長度大於12秒,則音頻不起作用。AVCaptureSession音頻不適用於長視頻
回答
我發現解決方案爲an answer to a completely different question。
問題是AVCaptureMovieFileOutput中的movieFragmentInterval
屬性。
此屬性的文檔解釋什麼這些片段有:
QuickTime電影是由媒體樣本的和試樣臺 標識所述文件中其位置。沒有示例 表的電影文件不可讀。
在處理的文件中,示例表通常出現在文件的起始處 處。它也可能出現在文件的末尾,在 這種情況下,頭部包含一個指向 末端的樣本表的指針。當正在記錄新的電影文件時,由於文件的大小尚未知道,因此不可能 寫入示例表。 而是,記錄完成時必須寫入表格。如果 沒有采取其他操作,這意味着如果記錄不成功(例如,在發生崩潰時) 數據不可用(因爲沒有樣本表)。通過定期向電影文件插入「電影片段」 ,可以遞增地構建示例表格 。這意味着如果文件沒有完全寫入 ,電影文件仍然可用(直到寫入最後一個片段的位置)。
它還說:
默認爲10秒。設置爲kCMTimeInvalid以禁用片段寫入(通常不推薦) 片段寫入。
因此,出於某種原因,我的錄音在編寫片段時會越來越混亂。我剛剛添加了行movieFileOutput.movieFragmentInterval = kCMTimeInvalid;
(其中movieFileOutput
是我添加到AVCaptureSession的AVCaptureMovieFileOutput)來禁用片段寫入,並且音頻現在可以工作。
正在更新videoFileOutput.movieFragmentInterval = kCMTimeInvalid
爲我解決了這個問題。
但是,我在撥打startRecordingToOutputFileURL
後意外設置了movieFragmentInterval
。一個小時後,我意識到自己的錯誤。對於像我這樣的新手,注意這個明顯的序列。
videoFileOutput.movieFragmentInterval = kCMTimeInvalid
videoFileOutput.startRecordingToOutputFileURL(filePath, recordingDelegate: recordingDelegate)
我們也遇到過這個問題。基本上禁用電影片段的寫作會起作用,但並不能真正解釋問題。很可能您正在使用不支持此功能的文件擴展名錄制到輸出文件,如mp4
。如果您傳遞擴展名爲mov
的輸出文件,則使用電影片段寫入時應該沒有問題,並且輸出文件將具有音頻。
- 1. AVCaptureSession錄製帶有音頻的視頻
- 2. 用於音頻和視頻組合的AVCaptureSession - 音頻部分提供EXC_BAD_ACCESS
- 3. PHP - move_uploaded_file不適用於音樂/視頻
- 4. 音頻不適用於APK
- 5. onloadedmetadata不適用於音頻?
- 6. AVCaptureSession視頻不保存
- 7. AVCaptureSession取消背景音頻
- 8. 同時錄製帶有AVCaptureSession和回放音頻的音頻/視頻?
- 9. 適用於Android的HTML5應用的視頻和音頻格式
- 10. 沒有音頻處理的AVCaptureSession視頻預覽
- 11. 修剪音頻到視頻長度
- 12. 適用於Android平臺的音頻/視頻編解碼器
- 13. 適用於Android和iOS的視頻/音頻框架
- 14. 適用於iOS,Android和Web平臺的音頻/視頻會議
- 15. 流媒體音頻不適用於Android
- 16. 撰寫視頻和音頻 - 視頻音頻不見了
- 17. H264用於視頻音頻流
- 18. 用於html5音頻和視頻的volumelider
- 19. 使用AVCaptureSession僅錄製音頻
- 20. AVCaptureSession視頻方向iOS
- 21. FFMPEG添加音頻到視頻,但它夾到視頻長度
- 22. 使用音頻播放視頻後錄製音頻和視頻
- 23. 用ffmpeg混合不同長度的音頻/視頻
- 24. 用於Silverlight視頻會議的視頻/音頻編解碼器
- 25. 視頻JS不適用於新視頻元素
- 26. HTML5視頻和音頻並不適用於所有(手機)玩瀏覽器
- 27. 複製不適用於包含音頻/視頻文件的CouchDB數據庫
- 28. 獨立於視頻的音頻
- 29. popcorn.js play()不適用於Vimeo視頻
- 30. Iframe allowfullscreen不適用於dailymotion視頻