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?
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:
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>
Utilisez-le à la place en HTML 5 <audio>
tag.
HTML 5 peut lire et contrôler n'importe quel format audio sans utiliser JavaScript.