首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将音频从Node.js服务器流式传输到HTML5 <audio> tag

将音频从Node.js服务器流式传输到HTML5 <audio> tag
EN

Stack Overflow用户
提问于 2010-10-18 04:19:05
回答 1查看 39.7K关注 0票数 57

我一直在用Node.js进行二进制流的实验,令我惊讶的是,我确实有一个有效的演示,使用node-radio-stream获取Shoutcast流,并使用分块编码将其推送到HTML5元素中。但它只在Safari中有效!

下面是我的服务器代码:

代码语言:javascript
运行
复制
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'); 

我的客户端代码很简单:

代码语言:javascript
运行
复制
<audio controls src="http://localhost:8000/"></audio>

这在Mac上的Safari5上运行得很好,但在Chrome或Firefox上似乎没有任何作用。有什么想法吗?

可能的候选者包括编码问题,或者只是部分实现的HTML5特性……

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3955103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档