繁体   English   中英

AVAssetExportSession不会导出由AVAudioRecorder录制的音频

[英]AVAssetExportSession Won't Export Audio Recorded by AVAudioRecorder

我的应用程序中有一个控件,用于记录音频并保存。 我使用AVMutableComposition将新录音添加到旧录音中,当用户准备保存时,我正在尝试使用AVAssetExportSession将所有内容写入新文件。 当我这样做时,我没有错误,并写入文件。 但是,该文件无法播放,我的完成块永远不会被调用。 有谁知道可能导致这种情况的原因是什么?

这是代码:

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

变量composition是AVMutableComposition,它向其添加了一个或多个AVURLAssets(先前或当前记录)。

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以确保它不是问题。 它仍然无法正常工作。

任何有关这方面的帮助将不胜感激。

好吧,我明白了。 当我录制音频时,我使用的是文件扩展名.aac。 但是,当我导出音频时,我使用的是文件扩展名.m4a。 我无法将导出文件扩展名设置为.aac(导出失败),但是当我将录制扩展名设置为.m4a时,一切正常。

您可以使用SDAVAssetExportSession使用AAC编码器记录到m4a,然后在完成时将其重命名为AAC。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM