Chrome: Abspielen mancher Ogg Files nicht möglich
Mehr durch Zufall habe ich festgestellt: manche meiner Stereo-Ogg Files lassen sich im Chrome mit dem html5 audio player gar nicht abspielen. Firefox spielte sie allesamt klaglos.
Ich habe zwar schon als Stereo-Quelle MP3 Dateien in verschiedenen Bitraten, aber alle Ogg Files, die daraus erstellt werden, gehen vorher durch ffmpeg und werden zu PCM WAV Dateien umgewandelt.
- Die Quelle zum Encoden nach Ogg ist somit immer WAV mit 44.1 kHz.
- Encoder ist immmer oggenc2 - also immer derselbe Encoder und denselben Parametern.
Also habe ich irgendwann die Suche nach Encoder-Problemen aufgegeben.
Soweit ich es debuggt habe, wird im Javascript-Code das Audio Objekt erfolgreich initialisiert. Auch die Methode play() wird erfolgreich aufgerufen. Chrome macht anschliessend - was man in der Entwicklerkonsole unter Netzwerk sieht - partial Requests auf das Audiofile. Und hier bleibt er hängen: “pending” steht da im Status.
Workaround:
Was ich gefunden hab: die URLs der Audiosourcen werden um ein “?” ergänzt - und schon funktionierts im Chrome.
also ALT:
<audio> <source src="/data/song_2.0_.ogg" type="audio/ogg"> <source src="/data/song_2.0_.mp3" type="audio/mp3"> (...) </audio>
und NEU:
<audio> <source src="/data/song_2.0_.ogg?" type="audio/ogg"> <source src="/data/song_2.0_.mp3?" type="audio/mp3"> (...) </audio>
… und das Javascript Snippet:
aSource ist ein Array mit den Keys src (eine URL des Audios) und type (MIME Type). Wenn kein “?” in der Audio-URL vorkommt, wird dieses angefügt.
s+='<audio>'; (...) sourcesrc=String(aSource.src); if(sourcesrc.indexOf("?")<0) sourcesrc+="?"; s+='<source src="' + sourcesrc + '" type="'+aSource.type+'">'; (...) s+='</audio>'; (...) document.getElementById("divaudios").innerHTML=s;
weiterführende Links
- Ogg Encoder
- ffmpeg.org
- AMC Player - Html 5 Player für stereo und surround Medien