Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android can't read iPhone recorded audio files

I record some Audio file with my iOS application and I send it to an Android application through my web server. The Android application successfully gets the file but when I use the MediaPlayer class to try and play it, it reports an error "Unable to to create media player" at the line mediaplayer.setDataSource(androidFilePath); Just to mention, iOS devices can read the files sent with the app. After some research I found that it may be an encoding issue. But I tried many recording settings provided here on SO but none has worked. Here is the code I use to record the audio file:

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];
    }

Could you just tell me what change do I have to make so that Android devices can read those audio files?

like image 359
Gannicus Avatar asked Aug 30 '15 16:08

Gannicus


1 Answers

I'd probably try .aac or .mp4 instead of .caf.

like image 151
gnasher729 Avatar answered Nov 04 '22 16:11

gnasher729