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

时间:2011-12-08 16:11:51

标签: iphone ios avfoundation

我正在使用AVAssetWriter和AVAssetWriterInputPixelBufferAdaptor从AVCaptureSession捕获视频。我正在将文件写入App的Caches目录。完成后,我将视频保存到相机胶卷。

现在问题在于: 从10到20分钟的短暂捕获会议,事情很好。大约30分钟后,我在调用[assetWriter 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进行录制。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我将大型文件保存到库中的最佳做法是以下代码(最初来自avcam by apple):

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)