2012-05-10 46 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。

相关问题