PCM Livestream über Internet und Puffern

OP #3545332
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.