두 개의 오디오 녹음 (AVAudioRecorder
을 사용하여 녹음 됨)을 하나의 파일로 결합합니다. AVAssetExportSession
을 사용하여 결합 된 파일을 내보낼 때 처음부터 완벽하게 작동합니다 (즉, 현재 뷰 컨트롤러에있는 동안) 그러나이 뷰를 다시로드하면 (새 세션) AVAssetExportSession exportAsynchronouslyWithCompletionHandler
: 메소드가 전혀 호출되지 않습니다 다시 전화하지 않습니다!) 오류를 더 아무것도 ... 나는 AVAssetExportSession 개체를 기록했는데, 나는이를 처음AVAssetExportSession exportAsynchronouslyWithCompletionHandler : 메서드가 호출되지 않았습니다.
<AVAssetExportSession: 0x155b3250, asset = <AVMutableComposition: 0x156474c0 tracks = ("<AVMutableCompositionTrack: 0x156a0bb0 trackID = 1, mediaType = soun, editCount = 0>")>, presetName = AVAssetExportPresetAppleM4A, outputFileType = (null)
이 두 번째 시간을 얻을
<AVAssetExportSession: 0x1559e840, asset = <AVMutableComposition: 0x155f7f30 tracks = ("<AVMutableCompositionTrack: 0x155f0120 trackID = 1, mediaType = soun, editCount = 1>")>, presetName = AVAssetExportPresetAppleM4A, outputFileType = (null)
유일한 차이점은 editCount = 1 것입니다.
나는 그것이 혼란 스럽다는 것을 알고있다, 그것은 나에게있다. 여기서 뭐하고 있니?
내 코드 :
AVAssetExportSession* exportSession = [AVAssetExportSession
exportSessionWithAsset:composition
presetName:AVAssetExportPresetAppleM4A];
NSLog(@"exportSession: %@", exportSession);
exportSession.outputURL = [NSURL fileURLWithPath:combined];
exportSession.outputFileType = AVFileTypeAppleM4A;
exportSession.shouldOptimizeForNetworkUse = YES;
[exportSession exportAsynchronouslyWithCompletionHandler:^{
switch (exportSession.status) {
case AVAssetExportSessionStatusFailed:
NSLog(@"AVAssetExportSessionStatusFailed");
break;
case AVAssetExportSessionStatusCompleted:
NSLog(@"AVAssetExportSessionStatusCompleted");
break;
case AVAssetExportSessionStatusWaiting:
NSLog(@"AVAssetExportSessionStatusWaiting");
break;
default:
break;
}
dispatch_async(dispatch_get_main_queue(), ^{
[self exportDidFinish:exportSession];
});
}];
editCount가 무엇인지 알아 냈습니까? – RSully