• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

HTML5-Audio-Tag / kein Ton mit IPhone unter Safari

Yogilein

Member
Hallo,

ich verwende in meinem Spiele folgenden Aufbau:

HTML:
<audio id="sfx1" preload loop oncanplay="gel1=1">
<source src="../Spiele/EuroMemo/Lied.mp3" type="audio/mpeg" />
<source src="../Spiele/EuroMemo/Lied.ogg" type="audio/ogg" />
</audio>

Safari unter Windows bringt Töne (Voraussetzung: QuickTime-Player ist geladen), Safari unter IOS nicht. Das Problem: "oncanplay" feuert nicht, so dass die Überwachungsvariable "gel1" immer auf 0 bleibt.

Hat dazu jemand eine Idee?

- - - Aktualisiert - - -

Ich habe gerade herausgefunden, dass bei diesem IPhone auch unter Chrome kein Ton kommt. Auf einem Samsung-Handy dagegen funktioniert alles einwandfrei.

Primär interessieren mich die Handys eigentlich gar nicht, da meine Spiele nicht dafür ausgelegt bzw. optimiert sind. Ich wollte nur testen, ob meine Spiele unter IOS laufen, also auf einem Mac.

Eine große Bitte: Da ich keinen Mac habe, kann sich von euch vielleicht jemand ein Spiel von mir (mit FX) auf einem Mac ansehen und mir sagen, ob die Tonausgabe funktioniert? Vielen lieben Dank!
 
Zuletzt bearbeitet von einem Moderator:
Hey ho, womöglich ein identisches Problem wie mit "autoplay" bei einem Video - das unterstützt iPhone nämlich von Haus aus nicht und lässt sich auch gar nicht (!) umgehen. Da kannst Du Dir ausdenken was Du willst - Apple will das nicht (beim Video). Vielleicht wird es also beim Audio identisch gehandhabt.

Und dann hatten wir hier kürzlich einen Thread über Lizenzen und die Verwendung von mp3. Auch da solltest Du nochmal einen Blick rein werfen ...

UND dann weise ich noch darauf hin, dass "loop" schlichtweg kacke ist, da es ständig einen "Leerbereich" gibt, wodurch ein Endlos-Sample "stottert". Auch das lässt sich nur mit Mühe bzw. Aufwand beheben.

Hab ich was vergessen? Ach ja ... das schönste am Mac ist der Knopf zum Ausschalten! Ich muss hier gerade so ein Powerbook-Scheißteil einrichten ... igittigittigitt! Bestes Feature: Magnet-Stromschalter. Aber genug der Lästerei ... als Windows-Knecht muss ich mir da auch immer ganz andere Dinge anhören. ;)

Starken Start in die Woche!
 
Yogilein schrieb:
Safari unter Windows bringt Töne (Voraussetzung: QuickTime-Player ist geladen), Safari unter IOS nicht.
Ja das ist ein bekanntes Problemchen unter iOS. Bekannt zumindest bei DSPLern, die sich mit WebAudio auseinandersetzen.
Apple geht davon aus, das nur dann Ton gespielt wird wenn man auf einen Play button klickt.

Das steht aus schon seit 2 Jahren so im Quelltext von WebSDR der Uni Twente. :p
https://github.com/ailove-lab/TheStructure/blob/master/proto/WebSDR/websdr-base-html5.js#L945
(Da durch ist das auch erst Public geworden).

Das betraf aber eigentlich nur die WebAudio-API, dass das Html 5 Audio Tag davon auch betorfen ist, ist mir neu.
Aber siehe da:
javascript - Cannot get WebAudio to play through iOS 8 - Stack Overflow

Yogilein schrieb:
da meine Spiele nicht dafür ausgelegt bzw. optimiert sind.
Da haben wir's wider Spiele(@mik, kkapser, hesst, ich erinnere "JS und Regexp"), also ich finde Javascript + Spiele passen zusammen wenn sich die Spiele-Vorstellung im rahmen halten. Da ich deine Spiele kenne passt das.

Für spiele würde ich eh auf die web audio api setzen, die läuft überall außer auf Safari unter Windows und im IE

Yogilein schrieb:
Da ich keinen Mac habe
Das habsch mit 'ner Virtuellen Umgebung gelöst.

SteelWheel schrieb:
Und dann hatten wir hier kürzlich einen Thread über Lizenzen und die Verwendung von mp3. Auch da solltest Du nochmal einen Blick rein werfen ...
Das war aber kein direkter Thread sondern nur ein hinweis meinerseits. Allerdings weiß ich gar nicht mehr welcher Thread das war.


SteelWheel schrieb:
UND dann weise ich noch darauf hin, dass "loop" schlichtweg kacke ist, da es ständig einen "Leerbereich" gibt, wodurch ein Endlos-Sample "stottert". Auch das lässt sich nur mit Mühe bzw. Aufwand beheben.
Ja ich erinnere mich, hast Du es denn eigentlich gelöst? Sowas geht am besten mit der WebAudio-API

SteelWheel schrieb:
gar nicht (!) umgehen.
Hm kann man keinen Button-klick simulieren wenn genug Daten geladen sind?

....mir fällt gerade ein, vielleicht kann man mit den new Audio() konstruktor tricksen.
 
Zuletzt bearbeitet:
Sodele, jetzt auf einem zweiten IPhone getestet und es geht nicht. Aber ... es läuft unterm Mac (soeben eine Bestätigungs-SMS erhalten). Damit ist mein Hauptproblem gelöst, aber wenn noch jemand eine Lösung fürs IPhone hätte ...
 
Yogilein schrieb:
aber wenn noch jemand eine Lösung fürs IPhone hätte ...
Ähm...https://www.youtube.com/watch?v=yvxtPLD_WFY
Wider zurück zum westlichen. Was passiert den wenn du die play() Methode aufrufst? also:

var audio = document.getElementById("sfx1");
audio.play();

Wenn das nicht geht musst du irgendwie eine Button klick simulieren (Fake klick) .

Ich hätte noch was für steel, es gibt auch canvas video Player und damit meine ich kein Video Element im canvas sondern richtig gerendert.
MPEG1 Video Decoder in JavaScript - PhobosLab
Allerdings gibt es da kein Ton soweit ich weiß, mann müsste separat eine Tonspur laden. Inwiefern das dann synchron bleibt k.a.
 
var audio = document.getElementById("sfx1");
audio.play();
Aber genau so starte ich dann meine Tonausgabe. Das Problem liegt viel früher, denn es werden die Sounddateien nicht geladen (oncanplay feuert nicht).

Ich habe mittlerweile auch ein Laden über Javascript ausprobiert, geht aber im IPhone auch nicht.
 
Yogilein schrieb:
Ich habe mittlerweile auch ein Laden über Javascript ausprobiert
Was bedeutet das genau? via XHR2 geladen und abgespielt über die WebAudio-API.

Das schon probiert:
var audio= new Audio("../Spiele/EuroMemo/Lied.mp3" );
audio.play();




Yogilein schrieb:
denn es werden die Sounddateien nicht geladen
Note: On the iPad, Safari does not begin downloading until the user clicks the poster or placeholder. Currently, downloads begun in this manner do not emit progress events.
https://developer.apple.com/library...t.html#//apple_ref/doc/uid/TP40009523-CH3-SW4

Hier im beispiel wird der redystate erst gefeuert wenn man den play Button klickt: Edit fiddle - JSFiddle ..... natürlich nur unter iOS

Alle Browser außer IE nutzen die WebAudio-API. Die WApi funktioniert einfach nur und man kann bedeutend besser timen.
Mach für den IE ein fallback, der Rest kommt von alleine und sagt dir schon ob es geht oder nicht. Ist zumindest bei meinem Websiten so :icon7:
 
Nein, der Steel will möglichst mit Bordmitteln arbeiten und sein Produkt nicht mit zig Scripten überfrachten, die so "Kleinkram" lediglich machen; in der kommenden Version meines Games könnte das u. U. interessant werden (hier wird schon aktiv mit Pre-Loadern gearbeitet und hat eine ordentliche Oberfläche [auf allen Geräten gleich, wobei nur das Menü responsiv ist]). Hier ist Event-Audio zwar eine angedachte Option, dass dieser dreckige Apfel aber derart schlecht aufgestellt ist, sorgt bereits jetzt bei mir für Unmut. Das Thema kommt also noch und war einst gar nicht akut. ;) (oder ich bin flexibel genug)
 
Yogilein schrieb:
Ja, aber mit gleichem negativen Ergebnis.
Hm, Verrückt. Es gibt bestimmt so etwas wie ein "Fakebuttonclick" . Oder du machst ein on/off Button für Ton, dann muss es gehen (Radio-Button gehen auch).

SteelWheel schrieb:
Bordmitteln arbeiten und sein Produkt nicht mit zig Scripten überfrachten,
Damit komme ich nicht klar, ist JavasSCript kein Bordmittel? Gerade bei spielen würde ich doch alles/vieles auf javascript setzen, Wenn ich ein Schachbrett+ Figuren in CSS/DOm bauen wollen würde, dann würde ich durchdrehen, im Canvas ist das z.z. erledigt.

xorg1990 schrieb:
Wenn ich ein Schachbrett in CSS/DOm bauen wollen würde, dann würde ich durchdrehen
Ok.. kommt immer drauf an wie man es gewohnt ist, finde das Canvas klasse, der andere verabscheut es. WEB-GL ist noch schlimmer.

SteelWheel schrieb:
dass dieser dreckige Apfel aber derart schlecht aufgestellt ist, sorgt bereits jetzt bei mir für Unmut.
Um ehrlich zu sein ich hasse dieses Unternehmen, so etwas spreche ich ungern aus. Apple hat ja sogar die USB Anschlüsse abgeschafft, bluetooth von einem Iphone zu einem nicht iphone geht auch nicht. Und Ohhh wow, das neue iPhone ist biegbar. Biegbare Leiterplatten gab es schon in der DDR:p

Apropos DDR:
Was heißt Weihnachtsengel auf DDRlich....: Jahresendflügelfigur. Geiles Unwort.
Bodybuilder ist auch geil: Körperkulturist. :p:cool:
 
Mein Lieblingsschlechtbeispiel ist Facebook - das strotzt nur so vor Client-Last. Und selbstverständlich ist JavaScript Bordmittel - aber eben kein Drittanbieter-Teil (ähnlich irgendwelcher Frameworks, die man ja unbedingt benötigt; bspw. für diese ganzen unsäglichen Blink-Wackel-Unschärfe-Parallax-Kackmistigen). Sorry, heute gab's zweistellige Stunden in der Agentur - ich bin genervt. :D

Audio ist seit HTML5 auch Bordmittel - korrekt? Wenn ich jetzt aber ein Script benötige, um Timings besser machen zu können als es der Browser implementiert hat, ist das nicht i. O.; zumindest aus meiner Sicht. Und beim Loop ist es grottig umgesetzt - egal in welchem Browser! STANDARD ist ein so schönes Wort - kennt sogar das W3C. ^^

Und nein, ein Fake-Klick geht nicht - wir haben für Video (mp4) alles probiert und das Drecksding "Apfel" macht es einfach nicht (nimmt übrigens auch seinen eigenen Videoplayer; vielleicht liegt es daran).

Final: Du hast "Pencil" dieser heroischen Ideenschmiede vergessen. Mein Mac ging heute einfach mal aus ... kam aus dem Standby nicht wieder raus ... egal was Du gedrückt hast. Das Gerät ist keine Woche alt ... High-Tech-PowerBook-Apfel ... *lach* ... sorry, aber das Ding hat keiner mehr an den Start gebracht (nein, auch nicht die Apfel-Jünger). Also? BootCamp, Windows 10 ... RENNT! Bleibt mir fern mit eurem überteuerten Obst!!! (730 EUR für iPhone 6 ... und sowas druckt man dann als "Angebot" ... lol-o-fantastico!)

Moral von der Geschichte? Finger weg von Audio als Standard, optional für den User anbieten (wenn passendes Gerät + selbst aktiviert + Bandbreite korrekt verwendbar). Alles andere ist ... unbrauchbar!

Getriggerte Sounds habe ich mir bereits abgeschminkt - hier werde ich noch ein paar HTML-Versionen wohl warten müssen.

Aber? Mir doch egal ... für mich geht's ohne Sound genauso weiter! ;)
 
Oder du machst ein on/off Button für Ton, dann muss es gehen (Radio-Button gehen auch).
Aktuell starte ich den Ton mit einem Mausklick auf ein Textfeld. Zu diesem Zeitpunkt sollte der Ton aber bereits vorgeladen sein.

Aber wie bereits gesagt, ist meine Zielgruppe nicht die Handyuser und auf einem Mac funktioniert es ja.
 
Yogilein schrieb:
Aktuell starte ich den Ton mit einem Mausklick auf ein Textfeld. Zu diesem Zeitpunkt sollte der Ton aber bereits vorgeladen sein.

Aber wie bereits gesagt, ist meine Zielgruppe nicht die Handyuser und auf einem Mac funktioniert es ja.
Ich würde mal meinen aktuell hast du keine andre Wahl als es so zu lassen.

SteelWheel schrieb:
Sorry, heute gab's zweistellige Stunden in der Agentur - ich bin genervt.
Was soll ich da sagen, ich habe jeden Tag zweistellige Stunden. Arbeit geht von 07:00 bis 18:00 Uhr, deswegen bin ich vor 19 Uhr nicht aktiv im Forum. Dafür habe ich dann ein halbes Jahr pause und verdiene trotzdem noch Geld:icon6::icon6::icon6:
2tens bin ich gestern mit meine Bauleiter mächtig zusammengeprallt, weil er alles Durcheinander bringt... das ist kein Bauleiter sondern ein Durcheinanderbringer.



Audio ist seit HTML5 auch Bordmittel - korrekt?
audio gehört seit html5 mit zum html5 Ökosystem.. korrekt. Allerdings gibt es Web Audio schon lange lange in FF. Die Webaudio api ist ja schon wider von Mozilla abgekupfert.
html5 ist kein Standard, sonder einen Kommerzieller Überbegriff HTML5.0 ist Standard.
kreise.png


SteelWheel schrieb:
Und nein, ein Fake-Klick geht nicht - wir haben für Video (mp4) alles probiert und das Drecksding "Apfel" macht es einfach nicht (nimmt übrigens auch seinen eigenen Videoplayer; vielleicht liegt es daran).
Aha habe die das also auch geschafft.

SteelWheel schrieb:
Final: Du hast "Pencil" dieser heroischen Ideenschmiede vergessen.
Auch das ist keine Neuerfindung, bin ja mal gespannt wann Apple Eye Tracker in Handys einbaut und sagt Neuerfindung. Eye Tracker gibt es auch ohne Brille!!!

SteelWheel schrieb:
Getriggerte Sounds habe ich mir bereits abgeschminkt - hier werde ich noch ein paar HTML-Versionen wohl warten müssen.
Ja wenn du die web audio api nicht nutzen willst, dann warten.


=SteelWheel schrieb:
Aber? Mir doch egal ... für mich geht's ohne Sound genauso weiter!
Das kann ich nicht sagen, mein Hauptaugenmerk liegt in DSP vorhallen Audio. Nur eins werde ich nie aufschlüsseln das ist die fourier transformation. Warum die Arbeit machen gibt es doch schon zig mal in JS, genauso IIR Filter. Dafür habe ich eine AGC Programmiert und derzeit ziehe über einen CW Skimmer her. Das Laden der Audio Daten erfolgt dabei über WebSocket, Stream in Realtime(Ohne große Pufferung) ist auch möglich.

Genug gehikhakt. Zu Yogilein's Thema wurde alles gesagt.
 
Zuletzt bearbeitet:
Ok, der Unterschied ist also, dass wir zwar beide zweistellig sind, mir aber dieses halbe Jahr Nixtun verwährt wird. Ich muss da wohl nochmal mit dem Chef reden ... :D

Dein Anspruch an Audio ist ja ein ganz anderer als meiner. Du "freakst" ja schon kräftig damit rum, während ich da lediglich "was abspielen" wollte. Auch glaube ich nicht, dass sich ein mobiler "Apfel" unter Verwendung besagter Lib überlisten lässt (Video?). Da würde ich fast ein Gehalt drum wetten, weil es außerhalb der Ausführungsschicht ist, wo dies entschieden wurde und man da eben nicht hinlangen kann.

Welche Lösung mein Kollege da jetzt genommen hat, erzähle ich nicht ... aber: unterhaltsam, läuft auf Apfel und es gab wohl ein paar graue Haare bei ihm. :)

Macht euch 'nen starken Mittwoch!
 
Zurück
Oben