私は AVAssetWriter AVCaptureSession を使用してビデオを記録します。うまく機能します。UIApplicationDidEnterBackgroundNotification と CTCallCenter.callEventHandler を使用して、アプリケーションがバックグラウンドになるか、呼び出しが着信したときに記録を停止します。UIApplicationDidEnterBackgroundNotification はうまく機能します。ここにAVAssetWriter.errorがあります:
Error Domain=AVFoundationErrorDomain Code=-11800 "この操作は完了しました" UserInfo=0x6c0bc20 {NSLocalizedFailureReason=発生不明错误(-12785), NSUnderlyingError=0x6c0fc80 "The operation could not be completed. (OSStatus error -12785.)", NSLocalizedDescription=この操作无法は完了しました}
AVAssetWriter は電話がかかってきた直後に失敗したようです。録音ファイルが完成していないため、再生できません。
CTCallCenter コード:
m_callCenter = [[CTCallCenter alloc] init];
m_callCenter.callEventHandler= ^(CTCall* call)
{
if (call.callState == CTCallStateDialing || call.callState == CTCallStateIncoming){
[self stopRecording];
//[self performSelectorOnMainThread:@selector(stopRecording) withObject:nil waitUntilDone:NO];
}
};
それ以外の場合、stopRecording は正常に機能します。