Android无法读取iPhone录制的音频文件

时间:2015-08-30 16:44:05

标签: iphone audio avfoundation android-mediaplayer

我用我的iOS应用程序录制了一些音频文件,然后通过我的网络服务器将其发送到Android应用程序。 Android应用程序成功获取文件,但当我使用MediaPlayer类尝试播放时,它会在mediaplayer.setDataSource(androidFilePath);行报告错误“无法创建媒体播放器” 仅举这一点,iOS设备可以读取随应用程序发送的文件。 经过一些研究后,我发现它可能是一个编码问题。但我在SO上尝试了很多录音设置,但没有一个有效。这是我用来录制音频文件的代码:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

    NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] initWithCapacity:10];

        [recordSettings NSNumber numberWithInt: kAudioFormatMPEG4AAC] forKey: AVFormatIDKey];
        [recordSettings setObject:[NSNumber numberWithFloat:16000.0] forKey: AVSampleRateKey];
        [recordSettings setObject:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
        [recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityMin] forKey: AVEncoderAudioQualityKey];

    }
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *basePath = paths[0];
    self.audioURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/recordTest.caf", basePath]];


    NSError *error = nil;
    self.audioRecorder = [[ AVAudioRecorder alloc] initWithURL:self.audioURL settings:recordSettings error:&error];

    if ([self.audioRecorder recordForDuration:60] == YES){
        [self.audioRecorder record];
    }

您能否告诉我,我必须做出哪些更改才能让Android设备读取这些音频文件?

3 个答案:

答案 0 :(得分:3)

我可能会尝试.aac或.mp4而不是.caf。

答案 1 :(得分:0)

尝试从代码中删除AVEncoderAudioQualityKey,并检查这是否解决了问题。还要检查您正在检查的Android设备是否能够正确播放其他aac文件。

答案 2 :(得分:0)

不,你不能陈述所有使用的格式Check here

您必须先转换为AAC或WAV才能使用它