Forum: Digitale Signalverarbeitung / DSP / Machine Learning PCM Livestream über Internet und Puffern


von Denny K. (xorg1990)


Lesenswert?

Hallo, bin neu im Forum, außerdem bin ich neu in sachen DSP.

Erstmal vorweg eine kleine Einleitung um was es geht:

Ich Programmiere hauptsächlich JavaScript, PHP, Perl(cgi)… im Prinzip 
Zeugs was sich im Browser abspielt.
Seit dem es die WebAudio API gibt arbeite ich mit der und war von Anfang 
an begeistert.

Jetzt komme ich aber mal absolut nicht weiter, auch in diversen 
JavaScript Foren wusste keiner weiter.

Zur WebAudio API ert mal ein paar Fakten:
- Die Sampling-Rate der Web Audio api richtet sich nach der Hardware 
oder nach den Browserherstellen, langsamer als 44100 Samples wird es 
aber nicht.

- Die API spielt nur float32(werte bis -1,+1), max offizielle Rate ist 
96000, Goolge  Chrome auch gerne mal bis 192000

- Die createBuffer method der api funzt nicht so richtig bei livestream, 
der Ton wird irgendwann immer langsamer, das geht so weht das sich der 
Browser aufhängt.
2tens auf Tablets, IPhone usw. geht keine Samplingrate von 96000.

- Jetzt bleibt für die Soundausgabe nur noch der ScriptProcessor. Dazu 
erst einmal etwas Mathematik: 
1/44100(Hz=1/s)=0,000022676s*2048=0,046439909s Pufferdauer.
1/0,046439909s=20,226. Das bedeutet das der onaudioprocess Event rund 20 
mal in der Sekunde ausgeführt wird, bei einer Samplingrate von 44100 und 
einer Größe von 2048 sample Frames.
Das wiederum sind 41422,848 Samples in einer Sekunde. 
20,226*2048=41422,848.

Auf dem Server lasse ich die Soundkarte ebenfalls mit einer Rate von 
44100 abtasten und die Auflösung ist auch float32
44100*32bit/4=352800bytes/1024=344.53Kilobytes

Wenn ich jetzt warte bis die 344.53Kb beim Client erreicht sind habe ich 
eine wahnsinnige Latenz.

Wie muss ich das jetzt Puffern und wie bekomme ich das hin das der 
ScriptProcessor den  Puffer nicht überholt.

Muss ich mir da einen Ringbuffer erstellen oder wie wird das 
normalerweise gemacht?

Mfg xorg1990

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.