我已经为这个问题苦苦挣扎了一个多星期。我希望有人看到我做错了什么。我正在尝试使用 finishWritingWithCompletionHandler: 方法,因为现在不推荐使用 finishWriting 方法。使用新方法我没有取得任何成功。它失败并出现未知错误 -11800。我可以使用不推荐使用的方法很好地保存我的 MOV 文件,但是当我使用新方法创建等效文件时,它每次都会失败。
这是我的原始代码:
dispatch_async(movieWritingQueue, ^{
if ([self.assetWriter finishWriting]) {
self.assetWriterAudioIn = nil;
self.assetWriterVideoIn = nil;
//[assetWriter release]; ARC will not allow this line.
self.assetWriter = nil;
self.readyToRecordVideo = NO;
self.readyToRecordAudio = NO;
[self.delegate movieReadyToSaveForMovieProcessor:self];
}
else {
[self displayError:[assetWriter error]];
dispatch_async(dispatch_get_main_queue(), ^{
[self resumeCaptureSession];
});
}
}];
我的新方法如下:
dispatch_async(movieWritingQueue, ^{
[self.assetWriter finishWritingWithCompletionHandler:^{
if (self.assetWriter.status != AVAssetWriterStatusFailed && self.assetWriter.status == AVAssetWriterStatusCompleted) {
self.assetWriterAudioIn = nil;
self.assetWriterVideoIn = nil;
self.assetWriter = nil;
self.readyToRecordAudio = NO;
self.readyToRecordVideo = NO;
[self.delegate movieReadyToSaveForMovieProcessor:self];
} else {
[self displayError:self.assetWriter.error];
dispatch_async(dispatch_get_main_queue(), ^{
[self resumeCaptureSession];
});
}
}];
}];
我不认为我错过了任何东西,而且我没有从它抛出的错误中得到太多。任何帮助将不胜感激。
谢谢,罗伯