Ich habe das gegoogelt und eine Zeitlang im stackoverflow nachgesehen, aber habe keine Lösung gefunden - daher der Post.
Ich spiele aus Neugier mit Node.js und WebSockets herum. Ich versuche einige binäre Daten (ein mp3) auf den Client zu streamen. Mein Code ist so weit unten, funktioniert aber offensichtlich nicht wie vorgesehen.
Ich vermute, dass mein Problem ist, dass ich binäre Daten nicht wirklich vom Server sende und mir eine Klarstellung / Hilfe wünschen würde.
Heres mein Server ...
%Vor%Und mein Klient ...
%Vor%Der Aufruf zum Decodieren endet immer im Fehlerrückruf. Ich nehme an, dies ist, weil es schlechte Daten empfängt.
Also meine Frage ist, wie kann ich die Datei korrekt als Binärdatei streamen?
Danke
Problem gelöst.
Ich habe dieses Problem mit einer Kombination aus dem Entfernen des Parameters "'encoding': 'binary'" aus den Optionen behoben, die an "createReadStream ()" und die Lösung an ...
übergeben wurdendecodeAudioData gibt einen Null-Fehler zurück
Laut einigen Kommentaren, als ich die createReadStream-Optionen aktualisierte, wurde der erste Chunk abgespielt, aber alle anderen Chunks führten den onError-Callback von decodeAudioData () aus. Die Lösung im obigen Link hat das für mich behoben. Es scheint, dass decodeAudioData () ein wenig wählerisch ist, wie die Chunks formatiert werden sollen. Sie sollten anscheinend gültige Stücke sein ...
Definieren Sie 'valid mp3 chunk' für decodeAudioData ( WebAudio API)
Was Ihr Server macht, ist, dass er Nachrichten, die aus binären Audiodaten in 64-KByte-Blöcken bestehen, an Ihren Client sendet. Ihr Client sollte die Audiodatei vor dem Aufruf von decodeAudioData
neu erstellen.
Sie rufen decodeAudioData
jedes Mal an, wenn Ihr Client eine Nachricht auf Websocket empfängt. Sie müssen einen separaten Puffer erstellen, um alle Chunks hinzuzufügen. Nach Abschluss der Übertragung sollte der Puffer dann in decodeAudioData
eingegeben werden.
Sie haben jetzt zwei Möglichkeiten:
decodeAudioData
zusammen.