以编程方式在 iOS 中录制的音频无法在 Windows 中播放

Posted

技术标签:

【中文标题】以编程方式在 iOS 中录制的音频无法在 Windows 中播放【英文标题】:Audio which is recorded in iOS programmatically could not be playable in Windows 【发布时间】:2014-11-13 08:38:14 【问题描述】:

场景: 我正在开发的应用程序我想录制语音备忘录并将它们发送到 Windows 客户端。在 ios 中录制音频并没有那么难,但录制的文件(在我的情况下是以 .mp3 的形式)could not be playable in Windows 但相同的文件could be easily playable in Mac

我强烈怀疑我在以下代码中使用的录音设置,

_audioRecorder = [[AVAudioRecorder alloc] initWithURL:audioFileURL settings:_recordingSettings error:&error];

我使用的设置是,

_recordingSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey,
                         [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey,
                         [NSNumber numberWithInt:16], AVEncoderBitRateKey,
                         [NSNumber numberWithInt: 2], AVNumberOfChannelsKey,
                         [NSNumber numberWithFloat:44100.0], AVSampleRateKey,
                      nil];

我已经尝试过各种AVFormatIDKeys比如

kAudioFormatLinearPCM    - .lpcm
kAudioFormatMPEG4AAC     - .acc
kAudioFormatMPEGLayer3   - .mp3

但没有收获。

感谢您的帮助。如果不可能,我需要解释原因!

【问题讨论】:

将其导出为线性 PCM,然后将标头调整为 wav? ccrma.stanford.edu/courses/422/projects/WaveFormat 感谢推荐,但解决方案有点复杂。我已经成功了。 【参考方案1】:

经过一些随机尝试后,我已经通过设置管理了自己,

_recordingSettings = [[NSDictionary alloc] initWithObjectsAndKeys:
                         [NSNumber numberWithInt:kAudioFormatLinearPCM],AVFormatIDKey,
                         [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,
                         [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
                         [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
                         [NSNumber numberWithBool:NO],AVLinearPCMIsNonInterleaved,
                         [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey,
                         [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
                         [NSNumber numberWithFloat:2000.0], AVSampleRateKey,
                     nil];

重要提示:文件名应为“someName.wav”

【讨论】:

以上是关于以编程方式在 iOS 中录制的音频无法在 Windows 中播放的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 5 上以编程方式规范化 PCM 音频样本?

如何以编程方式在 iphone 中执行应用程序音频的内部录制

iOS:增加录制音频的音量

AVfoundation无法在iOS 5中录制音频

录制的音频无法在设备上播放,但不能在 iOS 模拟器上播放

音频播放和录制不适用于 iOS 10