web-dev-qa-db-fra.com

Comment lire un fichier audio à partir d'une URL externe en utilisant Javascript?

J'ai une application (A) qui fait une demande ajax à une autre application (B) pour obtenir un lien vers un fichier son wave. Ensuite, je veux utiliser le lien pour lire ce fichier son directement depuis mon application (A).

J'ai essayé de créer une nouvelle balise audio mais j'obtiens l'erreur suivante dans la console.

Dans Chrome

Échec de lecture .... NotSupportedError: Échec du chargement car aucune source prise en charge n'a été trouvée.

Dans FireFox

Échec de la lecture .... NotSupportedError: la ressource multimédia indiquée par l'attribut src ou l'objet fournisseur de média attribué n'était pas appropriée.

Voici ma méthode de rappel qui est déclenchée après le retour de la demande ajax avec le lien de mon application (B).

function playAudio(data) {
    if(!data || !data.DownloadUrl) {
        return;
    }

    var audio = new Audio(data.DownloadUrl);  
    audio.type = 'audio/wav';

    var playPromise = audio.play();

    if (playPromise !== undefined) {
        playPromise.then(function () {
            console.log('Playing....');
        }).catch(function (error) {
            console.log('Failed to play....' + error);
        });
    }
}

Comment puis-je réussir à faire jouer ce fichier wav?

6
Junior

L'audio fonctionne correctement entre les serveurs sans problèmes supplémentaires, voir l'exemple ci-dessous.

Il peut y avoir un certain nombre de raisons pour lesquelles cela ne fonctionnerait pas:

  • Vérifiez l'onglet réseau pour vous assurer que le fichier wav est au bon endroit.
  • Vérifiez la console pour tout message d'avertissement expliquant pourquoi elle n'a pas pu être chargée.
  • Vérifiez ceci question/réponse pour les étapes de débogage supplémentaires.
  • Publiez de nouveau l'URL à partir de laquelle vous essayez de vous procurer ou des informations supplémentaires sur la demande.
async function playAudio() {
  var audio = new Audio('https://file-examples.com/wp-content/uploads/2017/11/file_example_WAV_1MG.wav');  
  audio.type = 'audio/wav';

  try {
    await audio.play();
    console.log('Playing...');
  } catch (err) {
    console.log('Failed to play...' + error);
  }
}
<a href="#" onclick="playAudio()">Play Audio</a>
6

Utilisez-le à la place en HTML 5 <audio> tag.

HTML 5 peut lire et contrôler n'importe quel format audio sans utiliser JavaScript.

0
adil khan