Question

J'essaie de télécharger un fichier audio capturé en utilisant l'API File de Phonegap.J'enregistre le fichier audio sous forme de fichier mp3, puis je localise le fichier dans le système de fichiers, puis je télécharge le fichier sur un serveur.L'enregistrement du fichier fonctionne bien et je peux le lire sur mon stockage local.Le téléchargement du fichier semble également fonctionner correctement, mais je ne parviens pas à lire le fichier mp3 une fois téléchargé.Alors qu'est-ce que je demande ?est-ce que le chemin d'accès au fichier enregistré que j'essaie de télécharger est correct, et est-ce que j'obtiens la bonne chaîne codée en base64 à partir du fichier multimédia, ou est-ce que je crée un nouveau fichier puisque mon appareil ne trouve pas le fichier que je recherche.Pour le moment, je travaille avec Android, mais s'il y a des bizarreries pour iOS, j'aimerais vraiment les connaître aussi.Lorsque je crée le fichier mp3, il est stocké dans mon répertoire /storage/emulated/0.Lorsque j'ouvre le fichier mp3 dans Firefox, la durée du fichier mp3 n'est que de 1 seconde, alors qu'elle devrait être de 7 secondes.Quel pourrait être le problème?J'apprécie vraiment toute l'aide que je peux obtenir, vous pouvez voir mon code ci-dessous.

 // The src of the mp3 file, works when I play it after in my local storage
     src = "recording.mp3";
      mediaRec = new Media(src, onSuccess, onError);

      // Record audio
      mediaRec.startRecord();

      // Stop recording after 7 sec
              mediaRec.stopRecord();

// get the file from the file system (local storage)
              window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
// Get the file from the file system

 function gotFS(fileSystem) {
      fileSystem.root.getFile("recording.mp3", null, gotFileEntry, fail);
 }  

 function gotFileEntry(fileEntry) {
     fileEntry.file(gotFile, fail);
 } 

 // the file is successfully retreived

 function gotFile(file){
   readDataUrl(file);
 }

 // turn the file into a base64 encoded string, and update the var base to this value.

 function readDataUrl(file) { 
     var reader = new FileReader();
     reader.onloadend = function(evt) {
    alert(evt.target.result);
    base = evt.target.result;
  };
   reader.readAsDataURL(file);
}

 // later when this is done I upload the file to something called parse. This seems to work fine, 

var file = new Parse.File("sound.mp3", { base64: base }); file.save().then(function() {
      Object.set("soundy", file);
   }, function(error) {
      alert("an error");
   // The file either could not be read, or could not be saved to Parse.
  });

Le fichier est maintenant enregistré avec succès en tant que fichier mp3 dans un objet d'analyse, mais je ne parviens pas à le lire.J'apprécie vraiment toute l'aide que je peux obtenir

Était-ce utile?

La solution

peut-être que votre problème est que la lecture du fichier est asynchrone et que le fichier n'est pas complètement lu lorsque vous essayez de le télécharger ?

Vous pouvez essayer de déplacer votre code uload à l'intérieur de la fonction de rappel dans readDataUrl() (juste après le base = evt.target.result; doubler)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top