小编Ayr*_*ane的帖子

AVAssetWriter 在appendSampleBuffer 之后变为 AVAssetWriterStatusFailed:

我正在尝试使用 AVAssetWriter 执行屏幕录制,它也接受音频输入。但是,我一直陷入这个错误,在appendSampleBuffer:(内部encodeAudioFrame:)进行几次调用后,AVAssetWriter有时会变成 AVAssetWriterStatusFailed

\n\n
Failed: Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x32b570 {NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x70d710 "The operation couldn\xe2\x80\x99t be completed. (OSStatus error -12737.)", NSLocalizedFailureReason=An unknown error occurred (-12737)}\n
Run Code Online (Sandbox Code Playgroud)\n\n

几点观察:

\n\n
    \n
  • 一旦进入此状态,后续记录尝试也将返回 AVAssetWriterStatusFailed,即使我使用不同的记录器对象也是如此。
  • \n
  • 当我注释掉音频录制块时,不会出现该错误。
  • \n
  • 但是当我注释掉视频录制块并且不修改任何传入的 CMSampleBufferRef 时,错误仍然出现。
  • \n
\n\n

任何帮助将不胜感激。

\n\n

下面是我正在使用的代码,为简洁起见,省略了几个部分。我目前使用的是 OSX 10.9 SDK,ARC 已关闭。

\n\n
- (BOOL) startRecording\n{\n    if (!isRecording)\n    {\n        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{\n            [self startCapture];\n\n            [self setUpWriter];\n\n            startedAt = [NSDate date];\n            isRecording …
Run Code Online (Sandbox Code Playgroud)

macos objective-c avfoundation avcapturesession avassetwriter

5
推荐指数
1
解决办法
1675
查看次数