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

时间:2014-11-13 08:38:14

标签: ios objective-c audio audio-recording

场景:我正在处理的应用程序我想要复制语音备忘录并将它们发送到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];

我已经尝试了各种AVFormatIDKey,例如

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

但没有收获。

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

1 个答案:

答案 0 :(得分:0)

经过一些随机的尝试,我已经设置了自己的设置,

_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”