AVFoundation: 30分钟后捕获视频失败



我使用avassetwwriter与AVAssetWriterInputPixelBufferAdaptor从AVCaptureSession捕获视频。我正在将文件写入应用程序的缓存目录。完成后,我将视频保存到相机胶卷中。

现在问题来了:对于10到20分钟的短捕获会话来说,情况很好。大约30分钟后,当调用[assetwwriter finishWriting]:

时,我得到这个错误。
Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" 
UserInfo=0x1a1d30 {NSLocalizedFailureReason=An unknown error occurred (268451843), 
NSUnderlyingError=0x1936e0 "The operation couldn’t be completed. (OSStatus error 
268451843.)", NSLocalizedDescription=The operation could not be completed}

另一个有趣的事情是,它实际上是保存视频到相机胶卷,但在某个点后视频似乎是损坏的。VLC显示视频长度为1小时,但只播放前30分钟。然后切成黑色

我不知道它为什么那样做。

我在iOS 5.0, iPhone 4S,录制30 FPS, 1920x1080和使用AVFileTypeMPEG4。

任何想法?

我保存大文件到库的最佳做法是以下代码(最初来自苹果的avcam):

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:outputFileURL
                            completionBlock:^(NSURL *assetURL, NSError *error) {
                                if (error) {
                                    // writing error occur
                                }
                            }];
[library release];

其中outputFileURL是临时相机文件的url(可以将其保存在应用程序临时文件夹或文档中)。欢迎您来看看我放在github上的一个示例项目:AVCam-CameraReleaseTest,它似乎可以用于长视频(3GS iOS 4.0)

最新更新