【问题标题】:cannot stop assetWriter finishWriting无法停止assetWriter完成写入
【发布时间】:2013-10-23 02:22:47
【问题描述】:

我正在尝试进行屏幕捕获并写入视频文件。

assetWriterTimer = [NSTimer scheduledTimerWithTimeInterval:0.5
                                                    target:self
                                                  selector:@selector (writeSample:)
                                                  userInfo:nil
                                                   repeats:YES] ;

-(void) writeSample: (NSTimer*) _timer
{
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
           //capture and save image to video
        });
}

为了停止记录,我写了

-(void) stopRecording 
{

[assetWriterTimer invalidate];
assetWriterTimer = nil;
[assetWriterTimer release];

[assetWriter finishWritingWithCompletionHandler:^(){
    NSLog (@"finished writing completion handler");
}];

NSLog (@"finished writing");
}

但是,我大多会收到此错误和应用程序崩溃。我应该怎么做?
-[AVAssetWriter finishWriting] status 为 2' 时无法调用方法

【问题讨论】:

    标签: video crash save screen-capture avassetwriter


    【解决方案1】:

    你在某处调用 [assetWriter startWriting] 吗?

    这个错误基本上意味着作者现在并没有真正在写作,所以它不能真正停止写作。如果您确实查看了 AVWriter's status codes 的含义,您会看到 2 表示完成写入时。

    enum {
     AVAssetWriterStatusUnknown = 0,
     AVAssetWriterStatusWriting,
     AVAssetWriterStatusCompleted,
     AVAssetWriterStatusFailed,
     AVAssetWriterStatusCancelled
    };
    

    【讨论】:

    • 你的回答太棒了。苹果聘请撒旦来编写他们的文档并创建他们的 API 和开发工具是一个骗局。 AVAssetWriterStatusUnknown 不仅表示您所说的内容,还表示与 AVAssetWriter 相关的任何与写入文件相关的内容,即未初始化的内容。这个想法是这样的:如果我们甚至不写作,我们怎么能完成写作? API 的文档记录非常差,并且认为这不应该是崩溃的原因,而是为了在完成处理程序中发出警告,但撒旦在 Apple 内部运行节目,所以,这是一个崩溃,没有给你的汤
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多