Format audio pour iOS et Android

Désolé si je pose une question trop générique.

Nous sommes dans le développement d'une application qui enregistre une lecture d'audio dans des appareils mobiles. Cette application se développe à la fois sur Android et iOS. L'application enregistre de l'audio à l'aide d'un périphérique et la mémorise dans le serveur. L'utilisateur (depuis Android et iOS) peut ouvrir l'application et lire le son stocké dans le serveur. Le format de son que nous utilisons est le format AAC. Dans iOS, il fonctionne bien. Nous pouvons enregistrer et lire les fichiers AAC.

  • Singletons vs. Contexte d'application dans Android?
  • Enregistrer l'image dans le journal de stockage local
  • Erreur lors de la gonflement de la classe android.support.v7.widget.Toolbar?
  • Impossible de trouver la classe de symboles dans Android Studio
  • La console Eclipse montre: 'Impossible de pousser la sélection: système de fichiers en lecture seule' lorsque j'essaie de pousser un fichier
  • Custom linting lib dans Android
  • Mais à partir d'Android (Samsung S3 et Sansung Galaxy Y), nous ne pouvons pas enregistrer de son au format AAC. Mais dans S3, nous pouvons jouer au fichier AAC.

    Ma question est, quel format nous pouvons sélectionner pour l'enregistrement et la lecture dans Android (devrait prendre en charge de 2.3 à Jellybean) et iOS. Est-ce Mp4?

    Une solution que nous avons est, du côté du backend, nous pouvons convertir le fichier audio en AAC, MP4 ou 3GP et donner les fichiers compatibles aux mobiles en fonction des versions.

  • Java.security.InvalidKeyException: taille de clé illégale ou paramètres par défaut dans Android
  • PhoneGap Android obtient le code de version de l'application
  • Comment éviter TagManager "IllegalStateException: les résultats ont déjà été définis"
  • Est-il possible d'utiliser des sous-dossiers dans des tirages sur Android?
  • Restriction de l'utilisation d'une clé Android pour une API Google
  • Contrôle de la visibilité visuelle à partir d'une ressource
  • 6 Solutions collect form web for “Format audio pour iOS et Android”

    Android et iOS utilisent le même serveur pour les enregistrements de stockage. Tous les enregistrements enregistrés sans extension.

    Lorsque l' Android télécharge l'enregistrement du serveur, mon application ajoute l'extension " .aac ".
    Lorsque iOS , il ajoute l'extension " .m4a ".

    Le même enregistrement joue bien sur les deux plates-formes mobiles.

    Enregistrement sur iOS:

    NSDictionary recorderSettings = [[NSDictionary alloc] initWithObjectsAndKeys:             [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey,             [NSNumber numberWithInt:16000],AVSampleRateKey,             [NSNumber numberWithInt:1],AVNumberOfChannelsKey,             [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,             [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,             [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,             nil]; 

    Pour Android:

     myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); myRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); myRecorder.setAudioSamplingRate(16000); myRecorder.setAudioChannels(1); mRecorder.setOutputFile(fileName); 

    Nous avons récemment complété une application avec ce type d'enregistrement de fonctionnalité à partir de l'écoute à la fois à partir d'iOS et d'Android, ci-dessous un code que nous avons utilisé pour votre référence. Nous nous sommes appuyés sur notre service Web et notre serveur pour la conversion au format .mp3 qui peut être facilement joué dans les deux Plate-forme.

     //iPhone side code. records m4a file format (small in size) NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey, [NSNumber numberWithFloat:16000.0], AVSampleRateKey, [NSNumber numberWithInt: 1], AVNumberOfChannelsKey, nil]; NSError *error = nil; audioRecorder = [[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recordSettings error:&error]; if (error) NSLog(@"error: %@", [error localizedDescription]); else [audioRecorder prepareToRecord]; //Android side code. (records mp4 format and it works straight away by giving mp3 extension.) MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); recorder.setAudioEncodingBitRate(256); recorder.setAudioChannels(1); recorder.setAudioSamplingRate(44100); recorder.setOutputFile(getFilename()); try { recorder.prepare(); recorder.start(); myCount=new MyCount(thirtysec, onesecond); myCount.start(); recordingDone=true; count=0; handler.sendEmptyMessage(0); if(progressDialog.isShowing()) progressDialog.dismiss(); } catch (IllegalStateException e) { e.printStackTrace(); StringWriter strTrace = new StringWriter(); e.printStackTrace(new PrintWriter(strTrace)); CrashReportActivity.appendLog( "\nEXCEPTION : \n" + strTrace.toString() + "\n", Comment.this); } catch (IOException e) { e.printStackTrace(); StringWriter strTrace = new StringWriter(); e.printStackTrace(new PrintWriter(strTrace)); CrashReportActivity.appendLog( "\nEXCEPTION : \n" + strTrace.toString() + "\n", Comment.this); } 

    Vous pouvez trouver le code de conversion de m4a en mp3 dans .Net facilement, regarder autour en googling (boote ou faad quelque utilité comme ça).

    J'espère que cela t'aides.

    Nous avons récemment fait face à ce problème d'interopérabilité. Nous essayions d'enregistrer un fichier au format aac dans les deux plates-formes, mais les fichiers enregistrés à l'aide de combinés Samsung n'étaient pas joués dans iOS. Donc, nous avons dû utiliser à la fois 3gp ainsi que les formats aac afin de jouer le fichier sur plusieurs appareils dans Android et ios.

    Voici le code que nous avons utilisé lors de l'enregistrement d'un fichier dans Android:

      mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); mRecorder.setOutputFile(fileName); 

    Nous avons maintenu l'extension du fichier enregistré comme .3gp.

    Dans iOS, cependant, l'enregistrement ne peut pas être effectué en 3gp, donc nous avons enregistré un fichier dans .aac dans iOS qui peut être joué dans les deux plates-formes.

    Avec la combinaison MPEG4 et AAC, toutes les reproductions audio sur Android. Mais sur iOS, nous avons dû utiliser "m4a" comme extension de fichier pour que l'audio Android joue.

    Par programme, cela vous aidera et l'extension de fichier mp3 / mp4 pour audio; Les deux supporteront les lecteurs multimédias. Extrait Android:

     myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); myRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 

    IOS snippet

     AVFormatIDKey: @(kAudioFormatMPEG4AAC) 

    Android utilise le format de sortie MPEG 4 et l'encodeur audio AAC

    IOS utilise kAudioFormatMPEG

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.