我想用一系列流畅的、可变长度的剪辑来录制视频/音频。也就是说,vid1.mp4和vid2.mp4应该无缝连接在一起,或者大部分是无缝连接。
我目前的问题是,我似乎不能立即切换文件而不出现错误。
问题的症结在于:
func recordNewClip() {
let file = self.outputUrl()
let filePath = file!.path!
try? NSFileManager.defaultManager().removeItemAtPath(filePath)
movieOutput!.stopRecording()
movieOutput!.startRecordingToOutputFileURL(file, recordingDelegate: self)
}如果我不调用stopRecording,我会得到错误,如果我调用了stopRecording,只会记录随机的视频剪辑;大多数记录都会失败。
如何使用AVFoundation捕获连续的视频剪辑?
发布于 2016-09-17 00:30:21
我们开始吧!所以,这是一个不是很多人处理的话题,所以让我给你一些帮助。
当您记录时,您有一个会话和一个输出
如果您阅读有关委托方法的apple文档,您将看到
startRecordingToOutputFileURL这仍然会触发
didFinishRecordingToOutputFileAtURL问题是您需要更新输出并从会话中添加/删除它。
所以对于swift ->
....
// Remove old output
session.removeOutput(output);
// Create new output
output = AVCaptureMovieFileOutput()
if session.canAddOutput(output) {
session.addOutput(output)
output.startRecordingToOutputFileURL(fileDest, recordingDelegate: self.delegate)
}
.... 这将触发委托方法(委托方法!)
func captureOutput(captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!, fromConnections connections: [AnyObject]!, error: NSError!) {
let outputPath = outputFileURL.path!
do {
print(outputPath);
try NSFileManager.defaultManager().removeItemAtPath(outputPath)
} catch _ {
print("error removing file");
}
do {
try NSFileManager.defaultManager().moveItemAtPath(outputFileURL.path!, toPath: outputPath)
} catch _ {
print(error);
}
}这个想法是,你必须这样做,因为如果你停止记录,你需要创建一个新的会话,然后创建一个新的输出。这样,您只需要创建一个新的输出。
请让我知道,如果这需要任何编辑或调整,但它为我工作。
https://stackoverflow.com/questions/32803219
复制相似问题