Verzerrtes Audio in iOS 7.1 mit WebAudio API

8

Unter iOS 7.1 erhalte ich immer einen summenden / verrauschten / verzerrten Sound , wenn ich Audio mit der Web Audio API abspiele. Es klingt so verzerrt , anstelle von normal so .

Bei Verwendung von HTML5-Audio sind die gleichen Dateien in Ordnung. Es funktioniert alles auf dem Desktop (Firefox, Chrome, Safari.)

BEARBEITEN:

  • Der Ton ist in den iOS Simulator-Versionen iOS 7.1, 8.1, 8.2 verzerrt. Der summende Ton beginnt oft, bevor ich überhaupt etwas abspiele.
  • Der Ton ist auf einem physischen iPhone mit iOS 7.1 sowohl in Chrome als auch in Safari verzerrt.
  • Auf einem iPhone mit iOS 8.1 sowohl in Chrome als auch in Safari ist die Audioqualität in Ordnung.

i. d. h. das summende Audio ist auf iOS 7.1. nur.


Howler.js ist nicht das Problem. Das Problem ist immer noch dort mit reinem JS wie folgt:

%Vor%

Eine Live-Version dieses Codes finden Sie hier: Web Audio API - Hallo Welt


Google hat zu solch einem verzerrten Soundproblem auf iOS 7.1 kein Ergebnis gebracht.

Ist jemand anderes hineingerannt? Soll ich Apple einen Fehler melden?

    
Fabien Snauwaert 27.04.2015, 16:48
quelle

2 Antworten

4

Ich glaube, dass das Problem durch das Zurücksetzen der "audioContext.sampleRate" -Stütze verursacht wird, die scheinbar auftritt, nachdem der Browser etwas abgespielt hat, das mit einer anderen Abtastrate aufgezeichnet wurde.

Ich habe die folgende Problemumgehung entwickelt, bei der im Grunde eine kurze WAV-Datei abgespielt wird, die mit der Sampling-Rate aufgenommen wurde, auf der das Gerät gerade läuft:

%Vor%

Wenn einige Geräte unterschiedliche Abtastraten haben, müssen Sie natürlich für jede Rate eine bestimmte Datei erkennen und verwenden.

    
Nikolay Tsenkov 28.12.2015 16:32
quelle
3

Es sieht so aus, als ob iOS6 + Safari eine Abtastrate von 48000 hat. Wenn Sie diese beim ersten Öffnen einer mobilen Safari in die Entwicklerkonsole eingeben, erhalten Sie 48000:

%Vor%

Weitere Referenz: Ссылка

Wenn Sie dann den Anfangskontext beim Laden schließen: ctx.close() , wird der nächste erzeugte Kontext die Sample-Rate verwenden, die die meisten anderen Browser verwenden (44100) und der Sound wird ohne Verzerrung abgespielt.

Dankeschön dafür, dass ich in die richtige Richtung gewiesen habe (und falls das Obige in Zukunft nicht mehr funktioniert): Ссылка

Funktion ab dem Post-Datum:

%Vor%     
Yining Chen 05.05.2016 18:23
quelle

Tags und Links