2017-01-29 3 views
2

Ich streame Audio mit http. Ich lade das Audio mit dem folgenden Code.Einstellen von currentTime funktioniert nicht beim Streaming von Audio über http

var audio = new Audio("http://example.com/get/stream/1/wav"); 
function seek(time){ 
    audio.currentTime = time; 
} 

Der Browser kann das Audioformat wiedergeben.

Ich verwende einen Nodejs Express-Server, um die Audiodatei zu bedienen. Im Folgenden finden Sie eine vereinfachte Version des Codes, der den Stream verarbeitet.

app.get("/get/stream/:id/:format", function(req, res){ 
    //Here was some code to verify the request, this code doesn't affect this question so I left it out 

    var stat = fs.statSync(__dirname+"/path/to/file/here.wav"); 

    res.header("Content-Type", "audio/wav"); 
    res.header("Content-Length", stat.size); 

    var readStream = fs.createReadStream(__dirname+"/path/to/file/here.wav"); 
    readStream.pipe(res); 
}); 

Wenn ich eine normale Audiodatei (eine, die nicht http-Streaming nicht verwendet) lade Funktion des Such normal funktionieren wird, aber wenn ich eine Audio-Datei, die den Songs http-Streaming nicht verwendet wird, um die gerade springen Anfang.

Ich muss HTTP-Streaming verwenden, weil einige Dateien extrem groß sind und Komprimieren/Transcodieren sie zu einer kleineren Größe ist keine Option?

Also meine Frage ist: Wie kann ich die aktuelle Zeit einer Audiodatei ändern, die HTTP-Streaming verwendet?

Antwort

2

Der Browser muss wissen, dass das Suchen erlaubt ist.

Versuchen Zugabe:

res.header("Accept-Ranges", "bytes"); 

Alternativ können, wie Sie Knoten Express verwenden, können Sie einen hinzufügen Plug-in, hilft bei Suche, wie this one.

Verwandte Themen