从头开始创建音频流媒体平台



我正试图从头开始创建一个点播音频流媒体平台(类似于Spotify(。它将有1000个用户(我正在优化构建时间,而不是目前的可扩展性(。我想使用基于网络的技术(我对React/Redux/Node很有经验(。我能得到一些关于架构的建议吗(我应该在项目中使用什么技术(?

以下是需要帮助的内容

  1. 我应该为我的音乐文件使用什么存储服务(我的歌曲目录大约为50000(
  2. 如何将音乐从存储服务流式传输到每个用户
  3. 我应该使用什么服务器协议(RTMP/WebRTC/RTS(
  4. (可选(如何在缓存中存储数据以减少缓冲区

我知道这是一个巨大的要求,所以感谢你们提前帮助

我应该为我的音乐文件使用什么存储服务(我的歌曲目录大约是50000(

S3(或同等产品(。

音频文件正好适合这个用例,而且您已经在使用AWS了。如果你觉得成本太高,有更实惠的兼容服务,一直到Minio上的DIY。

如何将音乐从存储服务流式传输到每个用户

使用CDN(或多个CDN(优化交付并保持低延迟。CDN也更擅长用勺子喂慢客户。

我应该使用什么服务器协议(RTMP/WebRTC/RTS(

正常HTTP!这就是你所需要的,也是几十年来这个用例所需要的。

RTMP是一个死协议,只有客户端的Flash支持。如今,它的使用仅限于从视频编码器发送源流,即使如此,它也正在走出国门。

WebRTC适用于低延迟连接,如语音通话和视频聊天。这在单向流中并不重要。你实际上想要一个强大的流媒体机制。。。而不是像手机那样为了保持实时性而丢弃音频。

RTSP不是你可以在浏览器中使用的东西,而且对于你需要的东西来说过于复杂。

仅仅一个简单的HTTP服务就足够了。你的服务器应该支持远程请求,这样浏览器就可以失去连接,仍然可以在侦听器不知情的情况下从中断的地方恢复。(所有CDN都支持这一点,任何正确配置的web服务器也是如此。(

(可选(如何在缓存中存储数据以减少缓冲区

CDN通常会提高初始连接和加载的性能。我还建议预先加载列表中要播放的下一首曲目,以便您可以立即开始播放。在大多数浏览器中,您实际上可以在上一个曲目的末尾开始下一个曲目,以实现平稳过渡。

最新更新