objective-c - AVAssetExportSession 不会导出 AVAudioRecorder 录制的音频

标签 objective-c ios avassetexportsession

我的应用程序中有一个控件可以录制音频并保存它。我使用 AVMutableComposition 将新录音附加到旧录音,当用户准备好保存时,我尝试使用 AVAssetExportSession 将所有内容写入新文件。当我这样做时,我没有得到任何错误,并且一个文件被写入。但是,该文件无法播放,我的完成 block 永远不会被调用。有谁知道是什么原因造成的?

代码如下:

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

变量 composition 是一个 AVMutableComposition,它添加了一个或多个 AVURLAssets(以前或当前的录音)。

更新

我不知道这是否有帮助,但我正在使用 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 时一切正常。

关于objective-c - AVAssetExportSession 不会导出 AVAudioRecorder 录制的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10542063/

相关文章:

ios - 如何在特定时间快速修剪视频

ios - 在ios的文本字段中添加无法编辑的加号( objective-c )

objective-c - SSL 和 NSStream

ios - 从 'AUAudioUnitBus?' 转换为无关类型 'UICollectionViewLayoutAttribute' 总是失败 - swift 2 iOS 9

objective-c - 如何在iOS中检索和遍历声音数据 block ?

swift - 如何从 AVFoundation 错误获取更多信息

ios - 无法从 NSString 创建 NSUrl 总是得到 nil

iphone - 什么是 __NSArrayI 和 __NSArrayM?如何转换为 NSArray?

ios - 对于 iOS 项目,我应该将什么 XML 解析器与 Delphi XE2 一起使用?

iOS - swift - 使用 AVFoundation 合并视频