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
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?
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).
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.
Tags und Links html5 websocket webrtc web-audio getusermedia