2017-12-01 6 views
0

Mein Ziel ist es, einen Radio-Stream von einem Icecast-Server aufzunehmen.So speichern Sie einen Audio-Stream als WAV-Datei mit NodeJS

Ich verwende das Knotenmodul icecast, um den Radiostream abzurufen und dann die Wave-Datei zu schreiben, indem der Stream durch das wav-Modul geleitet wird. Hier

ist ein Beispiel für meinen Code:

const icecast = require('icecast'); 
const url = 'http://87.118.104.139/radiogibsonaac'; 
var wav = require('wav'); 

let ice, fileWriter; 

ice = icecast.get(url, res => { 
    fileWriter = new wav.FileWriter(__dirname+'/recording.wav', { 
     channels: 1, 
     sampleRate: 16000, 
     bitDepth: 128 
    }); 
    res.pipe(fileWriter); 
}); 


setTimeout(()=>{ 
    fileWriter.end(); 
    ice.end(); 
},5000); 

Der Strom successully auf meine Festplatte aufgezeichnet wird, wie erwartet, und ich bin in der Lage auf die Datei in VLC zu hören, aber die WAV-Datei selbst scheint nicht zu richtig gebildet sein.

Wenn ich versuche, ein anderes Tool zum Bearbeiten der Datei zu verwenden, wird jedes Mal ein Fehler angezeigt. Zum Beispiel versuche ich, die Geschwindigkeit des Audios auf this site zu ändern, und es erkennt die Datei nicht.

Auch wenn ich versuche, die Datei-Info mit dem Sox CLI anzuzeigen es zeigt:

SOx FAIL-Formate: kann nicht geöffnet Eingabedatei `recording.wav ': Sorry, nicht verstehen, .wav Größe

Weiß jemand, wenn ich einen Schritt beim Schreiben der WAV-Datei auf die Festplatte vermisse?

Antwort

1

Basierend auf der Stream-URL sieht es so aus, als wäre der Stream im AAC-Format und Sie versuchen, diese Daten direkt in eine WAV-Datei zu schreiben. Sie erhalten also eine Datei mit einem WAV-Header, aber AAC-Audiodaten.

Sie müssten entweder den Stream als AAC auf die Festplatte schreiben und dann eine Konvertierung für die Datei durchführen oder den Stream on-the-fly umcodieren, bevor er auf die Festplatte geschrieben wird.

Verwandte Themen