我使用AVAssetWriter记录视频到文件。所以我为这个目的创建了类。链接到gist
然后在项目的某个地方,我推送录音并开始录制视频。
func start() {
assetWriter?.startWriting()
assetWriter?.startSession(atSourceTime: kCMTimeZero)
}如果我只录制一次视频,但当我停止录制时,一切正常。
func finish() {
print("before finish")
assetWriter?.finishWriting {
print("finish writing")
}
}然后试着录下另一段我得到异常的视频
[AVAssetWriter startWriting] Cannot call method when status is 2如何将AVAssertWriter配置为录制倍数视频
发布于 2018-04-02 09:03:06
不清楚是要创建多个视频文件还是将多个视频序列追加到单个文件中。如果您需要多个文件,请重新创建您的AVAssetWriter和朋友(即您的AssertController类)。
如果您希望文件中有多个序列,那么要知道AVAssetWriter不支持停止和启动,所以解决方案是不停止。您控制要追加的帧以及会话时间线上的时间,因此在“停止”时不要添加框架。
您的gist使用帧号来计算缓冲区表示时间戳,因此没有什么可做的,但是如果您使用的是图像示例缓冲区,那么它们已经有了自己的演示时间戳,您需要调整它们以处理会话时间线。
发布于 2018-12-18 02:28:32
当您使用AVAssetWriter时,您只能使用给定的AVAssetWriter实例一次来写入单个文件。每次写入文件时,都必须使用AVAssetWriter的新实例。
https://stackoverflow.com/questions/49607857
复制相似问题