通过 NodeJS 流式传输音频的最快方法
Fastest way to stream audio via NodeJS
我所有的音频文件都来自外部来源,Google 云存储。并且所有文件都有一个 public URL,无需授权令牌即可访问。
示例 URL:https://storage.googleapis.com/bucket/randomId.mp3
我目前将音频流式传输到客户端的方式是获取二进制文件并使用 sendSeekable
响应
示例代码
const url = 'https://storage.googleapis.com/bucket/randomId.mp3';
request({
url: track.file.location,
encoding: null,
}, (error, response, body) => {
res.setHeader('Cache-Control', 'no-cache');
res.sendSeekable(body);
});
但我看到 SoundCloud 所做的是他们会请求一小块新的 base64
音频,所以无论用户从哪里开始播放音乐,它都会非常快速地响应,就像有自己的方式一样做流媒体 seekable
.
所以我的任务是,做那种基础设施,用小块字节分割音频和响应是否可以通过?
流式音频有什么技巧或最佳做法吗?
best/fastest 要做的只是重定向到资源。使用 301、302、307 或 308 状态代码和 Location
header.
我所有的音频文件都来自外部来源,Google 云存储。并且所有文件都有一个 public URL,无需授权令牌即可访问。
示例 URL:https://storage.googleapis.com/bucket/randomId.mp3
我目前将音频流式传输到客户端的方式是获取二进制文件并使用 sendSeekable
响应
示例代码
const url = 'https://storage.googleapis.com/bucket/randomId.mp3';
request({
url: track.file.location,
encoding: null,
}, (error, response, body) => {
res.setHeader('Cache-Control', 'no-cache');
res.sendSeekable(body);
});
但我看到 SoundCloud 所做的是他们会请求一小块新的 base64
音频,所以无论用户从哪里开始播放音乐,它都会非常快速地响应,就像有自己的方式一样做流媒体 seekable
.
所以我的任务是,做那种基础设施,用小块字节分割音频和响应是否可以通过?
流式音频有什么技巧或最佳做法吗?
best/fastest 要做的只是重定向到资源。使用 301、302、307 或 308 状态代码和 Location
header.