如何从node.js获取音频流
How to get audio stream from node.js?
我正试图从node.js服务器流式传输mp3,但我无法接收任何数据,或者,如果我刷新客户端页面,我会收到一个跨原点错误
我的服务器代码是:
fs.readFile(path, function(error, file) {
if (error) {
response.writeHead(500, {"Content-Type": "text/plain"});
response.write(error + "'n");
response.end();
} else {
console.log('file ok');
var stat = fs.statSync(path);
var total = stat.size;
console.log('video size: ' + total);
var origin = (request.headers.origin || "*");
if (request.headers['range']) {
var range = request.headers.range;
console.log('range: ' + range);
var parts = range.replace(/bytes=/, "").split("-");
console.log('parts: ' + parts);
var partialstart = parts[0];
console.log('partialstart: ' + partialstart);
var partialend = parts[1];
console.log('partialend: ' + partialend);
var start = parseInt(partialstart, 10);
var end = partialend ? parseInt(partialend, 10) : total - 1;
var chunksize = (end-start) + 1;
console.log('RANGE: ' + start + ' - ' + end + ' = ' + chunksize);
var fileStr = fs.createReadStream(path, {start: start, end: end});
response.writeHead(
"200",
"OK",
{
"Access-Control-Allow-Credentials": true,
"Access-Control-Allow-Origin": origin,
"Content-Type": 'audio/mp3',
"Access-Control-Max-Age": 60*60*24*365, // Seconds.
"Access-Control-Allow-Methods": "GET,PUT,POST,DELETE",
"Access-Control-Allow-Headers": "Content-Type",
"Content-Range": "bytes " + start + "-" + end + "/" + total,
"Accept-Ranges": "bytes",
"Content-Length": chunksize
}
);
//response.writeHead(206, { 'Content-Range': 'bytes ' + start + '-' + end + '/' + total, 'Accept-Ranges': 'bytes', 'Content-Length': chunksize, 'Content-Type': 'audio/mpeg' });
fileStr.pipe(response);
} else {
console.log('ALL: ' + total);
response.writeHead(
"200",
"OK",
{
"Access-Control-Allow-Credentials": true,
"Access-Control-Allow-Origin": origin,
"Content-Type": "audio/mp3",
"Content-Length": file.length,
"Access-Control-Max-Age": 60*60*24*365, // Seconds.
"Access-Control-Allow-Methods": "GET,PUT,POST,DELETE",
"Access-Control-Allow-Headers": "Content-Type"
}
);
fs.createReadStream(path).pipe(response);
//response.end(html);
response.end(html);
console.log('-end-');
}
}
});
我总是到达目的地,但没有数据到达客户端。。
节点的媒体流模块。JS和JXcore。。https://github.com/obastemur/mediaserver
您可以使用它,也可以检查源代码。
相关文章:
- 是否可以在浏览器中使用纯JavaScript保存音频流
- 如何检测我的音频流是:正在播放、暂停还是已完成
- 从getUserMedia录制音频流
- purchase_url无法通过 SC.get() 获取 soundcloud 流收集
- 使用Cordova和JavaScript(无需getUserMedia)从android麦克风获取音频数据
- 使用WebAudio合并/混合两个音频流
- 从PHP脚本获取音频文件时,更改JavaScript音频对象的当前时间
- 如何获取音频录制的src
- 如何在 Javascript 中获取音频的分贝级别
- 从音频元素获取音频样本
- 检测 HTML5 音频流何时中断或暂停
- 将频率(大致)从一个 Web 音频流“克隆”到另一个白噪声流
- 如何在 HTML/JS 中获取 MJPEG 流的快照
- 使用Alfresco获取工作流的文件名
- Xively使用javascript从feed中获取数据流列表
- 音频流节点js
- 可以't获取音频文件
- 如何使用AudioContext HTML5从麦克风获取音频数据
- "获取音频时出错“;使用Recorder.js录制音频
- 如何从node.js获取音频流