node.js - 通过 NodeJS 传输音频的最快方式

标签 node.js express audio audio-streaming

我的所有音频文件均来自外部来源 Google Cloud Storage。所有文件都有一个无需授权 token 即可访问的公共(public) 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的方式。

所以我的任务是,做这种基础设施,用一小块字节分割音频和响应是否可行?

流音频有什么技巧或最佳实践吗?

最佳答案

最好/最快的做法就是重定向到资源。使用 301、302、307 或 308 状态代码和 Location header 。

关于node.js - 通过 NodeJS 传输音频的最快方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48357561/

相关文章:

javascript - 如何使用 Axios 和 Typescript 等待响应?

javascript - 两个提交按钮 - Node js Express

javascript - ExpressJS 和客户端中的 i18next 模块

c# - 使用NAudio,ADTS AAC转WAV转码,怎么做?

ios - UNNotificationSound.default() 是什么声音?

javascript - Javascript HTML播放声音仅一次,但是发生了更多奇怪的事情

javascript - 如何在GET方法中检查用户身份验证?

node.js - 在 Jenkins/configure 中找不到 NodeJs 插件安装

node.js - 获取https://gcp.io/v2/:x509:未知授权机构签名的证书

node.js - 超测: Can't set headers after they are sent