通过 NodeJS 流式传输音频的最快方法

Posted

技术标签:

【中文标题】通过 NodeJS 流式传输音频的最快方法【英文标题】:Fastest way to stream audio via NodeJS 【发布时间】:2018-01-20 14:59:24 【问题描述】:

我所有的音频文件都来自外部来源,即 Google Cloud Storage。并且所有文件都有一个公共 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 音频,所以无论用户从哪里开始播放音乐,它都会很快响应,就像有自己的流媒体方式@ 987654325@.

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

对于流式传输音频是否有任何提示或最佳做法?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于通过 NodeJS 流式传输音频的最快方法的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 nodejs 将麦克风音频从客户端流式传输到客户端吗?

如何将音频数据从 Android 流式传输到 WebSocket 服务器?

流式传输音频文件并缓存它

如何将媒体文件从服务器流式传输到客户端,例如我在 loopback 4 nodejs 中的 mp3 音频文件?

如何实时流式传输音频文件

将音频流式传输到其他 iOS 设备(使用多点)并通过本地设备播放音频