HTML5 & Web Audio API: Streaming von Mikrofondaten vom Browser zum Server. Ideale Transporte und Datenkompression

8

Ich möchte die Audioeingabe vom Browser nehmen und sie an mehrere Listener streamen. Der Verwendungszweck ist für Musik, also muss die Qualität mp3-Standard oder so ähnlich sein.

Ich habe zwei Möglichkeiten versucht, beide zu nicht erfolgreichen Ergebnissen:

WebRTC

  • Streaming von Audio direkt zwischen Browsern funktioniert gut, aber die Audioqualität scheint nicht anpassbar zu sein, obwohl das, was ich gesehen habe. (Ich habe gesehen, dass es den Opus-Audio-Codec verwendet, scheint aber keine Steuerelemente auszusetzen).
  • Hat irgendjemand einen Einblick in die Verbesserung der Audioqualität in WebRTC-Streams?

Websockets

  • Das Problem ist der Transport vom Browser zum Server. Die PCM-Audiodaten, die ich über das unten beschriebene Verfahren akquirieren kann, haben sich als zu groß erwiesen, um wiederholt über Websockets zum Server zu streamen. Der Stream funktioniert perfekt in High-Speed-Internet-Umgebungen, aber auf langsameren WLAN ist es nicht nutzbar.

    %Vor%

Die Hauptfrage ist also, gibt es eine Möglichkeit, die PCM-Daten zu komprimieren, um es einfacher zu machen, auf den Server zu streamen? Oder vielleicht gibt es einen einfacheren Weg, dies zu tun?

    
IyadAssaf 23.12.2013, 18:47
quelle

2 Antworten

3

Es gibt viele Möglichkeiten, PCM-Daten zu komprimieren. Sicher, aber realistisch gesehen ist es am besten, WebRTC ordnungsgemäß zu betreiben. WebRTC ist dafür geschaffen - Medien adaptiv zu streamen - obwohl Sie nicht definieren, was Sie mit "mehreren" Listenern meinen (es gibt einen großen Unterschied zwischen 3 Listenern und 300.000 gleichzeitigen Listenern).

    
cwilso 23.12.2013 20:25
quelle
2

Es gibt mehrere Möglichkeiten, Ihre Daten neu zu resetten und / oder zu komprimieren. Ich habe die Daten mit der xaudio.js-Bibliothek aus der speex.js Umgebung auf 8Khz Mono neu abgetastet (Ihre Laufleistung kann davon abweichen). Sie könnten den Stream auch mit Speex komprimieren, obwohl das normalerweise nur für Audio verwendet wird. In Ihrem Fall würde ich den Stream wahrscheinlich an einen Server senden, ihn dort komprimieren und an Ihre Zielgruppe streamen. Ich glaube wirklich nicht, dass ein einfacher Browser gut genug ist, um Daten einem großen Publikum zu liefern.

    
Michaela.Merz 26.12.2013 11:36
quelle