我正在使用 AVCaptureSession 录制带有音频的视频。对于短视频来说一切似乎都正常,但由于某种原因,如果我录制的视频长度超过 12 秒左右,音频就不起作用。
Edit (因为这个答案仍然得到点赞):这个答案可以缓解问题,但问题的可能根本原因已在@jfeldman 的回答 https://stackoverflow.com/a/38666844/2226732.
我找到了解决方案一个完全不同的问题的答案 https://stackoverflow.com/questions/10543180/weird-bug-with-avcapturesession#answer-25997260.
问题是movieFragmentInterval
AVCaptureMovieFileOutput 中的属性。
该属性的文档解释了这些片段是什么:
QuickTime 影片由媒体样本和样本表组成
确定它们在文件中的位置。没有样本的电影文件
表不可读。
在处理过的文件中,示例表通常出现在
文件的开头。它也可能出现在文件的末尾,在
在这种情况下,标头包含指向示例表的指针
结尾。当录制新的动画文件时,无法
由于文件的大小尚不清楚,因此写入示例表。
相反,必须在记录完成时写入该表。如果
不采取其他行动,这意味着如果录音不
成功完成(例如,发生崩溃时),文件
数据无法使用(因为没有示例表)。通过定期
在电影文件中插入“电影片段”,示例表可以
逐步建立起来。这意味着如果文件没有被写入
完全地,电影文件仍然可以使用(直到
最后一个片段被写入)。
它还说:
默认值为 10 秒。设置为 kCMTimeInvalid 以禁用电影
片段写作(通常不推荐)。
因此,由于某种原因,每当写入片段时,我的录音就会变得混乱。我刚刚添加了这一行movieFileOutput.movieFragmentInterval = kCMTimeInvalid;
(where movieFileOutput
是我添加到 AVCaptureSession 中的 AVCaptureMovieFileOutput)以禁用片段写入,并且音频现在可以工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)