2012-05-10 3 views
0

오디오를 녹음하고 저장하는 컨트롤이 앱에 있습니다. AVMutableComposition을 사용하여 새 레코딩을 기존 레코드에 추가하고 사용자가 저장할 준비가되면 AVAssetExportSession을 사용하여 모든 것을 새 파일에 쓰려고합니다. 이 작업을 수행 할 때 오류가 없으며 파일이 작성됩니다. 그러나 해당 파일을 재생할 수 없으며 완성 블록이 호출되지 않습니다. 이 문제의 원인은 무엇입니까?AVAssetExportSession은 AVAudioRecorder에서 녹음 한 오디오를 내 보내지 않습니다.

 AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:composition presetName:AVAssetExportPresetAppleM4A]; 
     exportSession.outputURL = URL; 
     exportSession.outputFileType = AVFileTypeAppleM4A; 
     exportSession.shouldOptimizeForNetworkUse = YES; 
     [exportSession exportAsynchronouslyWithCompletionHandler:^{ 
      NSLog(@"Export Complete"); 
     }]; 

composition 변수가 하나 이상의 AVURLAssets (하나 이전 또는 현재 기록)에 추가 않은 AVMutableComposition이다

여기서 코드이다.

UPDATE

이 도움이된다면 나도 몰라,하지만 난 오디오를 녹음 AVAudioRecorder를 사용하고 있는데 나는 다음과 같은 설정을 사용하고 있습니다 :

[recordSetting setObject:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey]; 
[recordSetting setObject:[NSNumber numberWithFloat:44100.0] forKey: AVSampleRateKey]; 
[recordSetting setObject:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey]; 
[recordSetting setObject:[NSNumber numberWithInt:64000] forKey:AVEncoderBitRateKey]; 
[recordSetting setObject:[NSNumber numberWithInt: AVAudioQualityMedium] forKey: AVEncoderAudioQualityKey]; 

업데이트 2

녹음 된 파일에서 생성 된 AVURLAsset을 사용하여 동일한 코드를 사용해 본 결과 AVMutableComposition을 잘라내어 문제가 없는지 확인했습니다. 아직 작동하지 않습니다.

이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.

답변

2

좋아, 나는 알아 냈다. 오디오를 녹음 할 때 파일 확장자 .aac을 사용하고있었습니다. 그러나 오디오를 내보낼 때 파일 확장명 .m4a를 사용하고있었습니다. 내보내기 파일 확장명을 .aac (내보내기 실패)로 설정할 수는 없지만 .m4a로 녹음 확장명을 설정하면 모두 정상적으로 작동합니다.

0

SDAVAssetExportSession을 사용하여 AAC 인코더로 m4a에 녹음 한 다음 AAC 인코더의 이름을 AAC로 바꿀 수 있습니다.

관련 문제