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.

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.

  • Quelle est la meilleure approche pour télécharger 1000+ enregistrements sur un serveur qui contient également des images pour chaque enregistrement depuis une application iOS / Android?
  • Est-ce que les préférences de lecture / écriture sont une opération coûteuse?
  • Comment utiliser mkdirs de manière sécurisée en Java?
  • Communication USB d'hôte Android
  • Comment suivre l'unité de périphérique (iOS et Android) à l'aide de Phonegap
  • Supprimer le fichier du stockage interne
  • Comment puis-je jouer une vidéo en morceaux d'octets?
  • UIImageView pour afficher la progression du chargement des applications
  • 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.