Eksperymentowałem ze strumieniami binarnymi w Node.js, i ku mojemu zdumieniu rzeczywiście mam działającą wersję demonstracyjną, w której biorę strumień Shoutcast za pomocą strumienia radiowego node-stream i wepchnięcie go do elementu HTML5 przy użyciu kodowania kodowanego. Ale działa tylko w Safari!Strumieniowe przesyłanie dźwięku z serwera Node.js do HTML5 <audio> tag
Oto mój kod serwera:
var radio = require("radio-stream");
var http = require('http');
var url = "http://67.205.85.183:7714";
var stream = radio.createReadStream(url);
var clients = [];
stream.on("connect", function() {
console.error("Radio Stream connected!");
console.error(stream.headers);
});
// When a chunk of data is received on the stream, push it to all connected clients
stream.on("data", function (chunk) {
if (clients.length > 0){
for (client in clients){
clients[client].write(chunk);
};
}
});
// When a 'metadata' event happens, usually a new song is starting.
stream.on("metadata", function(title) {
console.error(title);
});
// Listen on a web port and respond with a chunked response header.
var server = http.createServer(function(req, res){
res.writeHead(200,{
"Content-Type": "audio/mpeg",
'Transfer-Encoding': 'chunked'
});
// Add the response to the clients array to receive streaming
clients.push(res);
console.log('Client connected; streaming');
});
server.listen("8000", "127.0.0.1");
console.log('Server running at http://127.0.0.1:8000');
Mój kod klienta jest po prostu:
<audio controls src="http://localhost:8000/"></audio>
To działa prawidłowo w Safari 5 na Mac, ale nie wydaje się, aby zrobić coś w Chrome lub Firefox. Jakieś pomysły?
potencjalnych kandydatów w tym kwestie kodowania, lub tylko częściowo realizowanych funkcji HTML5 ...
Czy zdarzyło Ci się to kiedyś uruchomić? – abeger
Tak, sprawdź odpowiedź Nate'a poniżej, aby uzyskać więcej informacji. –
+1 Doskonała robota. –