web-dev-qa-db-fra.com

La lecture audio s’arrête/s’arrête sur Chrome 64

Google vient de changer la manière dont les précharges Google Chrome audio et video; voir: https://googlechrome.github.io/samples/media/preload-metadata

Je crois comprendre que le simple fait de définir l'attribut preload sur auto devrait résoudre le problème. Cependant, je n'ai pas pu le faire:

let mp3 = 'https://s3-staging.read2me.online/audio/5a745d88483d86.76121223.mp3';
let audio = new Audio(mp3);
audio.preload = 'auto';

audio.play();

<audio src="https://s3-staging.read2me.online/audio/5a745d88483d86.76121223.mp3" preload="auto" autoplay></audio>

Ces deux jeux cesseront de jouer dans la minute sur Chrome 64 et Chrome 65-dev (les autres navigateurs et les anciens Chromes ne sont pas affectés). J'ai reproduit ce problème sur Mac, Windows et Android.

Au cours de mon processus de débogage, j’ai attaché tous les événements médiatiques possibles à l’objet JS (c.-à-d. audio.addEventListener('timeupdate', () => { console.log('timeupdate') })) et les événements se sont d'abord déroulés comme suit:

progress timeupdate progress timeupdate [...]

Plus tard, comme ceci: timeupdate timeupdate timeupdate [...]

Lorsque la lecture audio s'est arrêtée, j'ai reçu une poignée d'événements error et le dumping audio.error renvoie: PIPELINE_ERROR_DECODE: Failed to send audio packet for decoding: timestamp=81763265 duration=26122 size=201 side_data_size=0 is_key_frame=1 encrypted=0 discard_padding (ms)=(0, 0)

Comment puis-je réparer ça? Est-ce un bug de Chrome?

METTRE À JOUR:

MISE À JOUR 2:

chrome://media-internals/ révèle ceci:

 enter image description here

MISE À JOUR 3:

Ce problème a été résolu dans Chrome 65.

11
Nino Škopac

Après quelques jours d'essais et d'erreurs et de recherches, j'ai confirmé ce qui ne fonctionne pas et ne fonctionne pas.

Ça ne marche pas

mp3wrap

mp3wrap output.mp3 *.mp3 le fichier de sortie est toujours corrompu et s'arrête

ffmpeg

ffmpeg -i "concat:0.mp3|1.mp3" -acodec copy output.mp3 le fichier de sortie est toujours corrompu et s'arrête

Ça marche

mp3val avec l'argument -f

Concaténez/implodez simplement vos fichiers binaires audio (dans PHP je fais implode('', $audioBinaries) puis exécutez mp3val -f concatenated-audio-file.mp3. L'argument -f est essentiel et signifie "essayez de corriger les erreurs".

Comment installer mp3val?

Sur MacOS: brew install mp3val Sous Deb/Ubu: apt-get install mp3val

5
Nino Škopac

Même problème que je rencontre avec la technique de concaténation. Avec ffmpeg, cela fonctionne bien. Essayez ffmpeg avec cette commande.

ffmpeg -f concat -i "{textfile}" -c:v copy -ab 48k -y "{output}"

textfile aura une liste de fichiers écrits par ligne.

0
Shozab Hasan