如何使用 nginx 缓存实时音频流(audio/mpeg)?

Posted

技术标签:

【中文标题】如何使用 nginx 缓存实时音频流(audio/mpeg)?【英文标题】:How to use nginx to cache the real-time audio stream(audio/mpeg)? 【发布时间】:2014-06-28 08:21:42 【问题描述】:

现在我有一个实时音频流,比如this one,但是如果有成千上万的用户直接访问它,过载会很严重,流服务器会崩溃。

有人说使用nginx的缓存是一种可能的解决方案,有人知道关于hwo配置nginx服务器的详细信息吗?

顺便说一下,流的内容类型是“audio/mpeg”。

非常感谢。

【问题讨论】:

【参考方案1】:

Nginx 无法缓存渐进式音频流。 Nginx 的缓存是为缓存正常的文件响应而构建的。如果响应永远不会完成(对于实时渐进式音频流来说不会),那么就没有任何东西可以缓存。此外,如果 10k 用户对于您的音频服务器来说太多了,那么对于 Nginx 来说也可能太多了。

如果您确实有 10,000 个同时听众,那么您需要一个 CDN。有很多可供选择,具体取决于您的具体需求和预算限制。

如果您想自己进行托管,则需要一些服务器和软件,例如Icecast。

【讨论】:

谢谢布拉德。如果 Nginx 无法缓存渐进式音频流。 CDN 是如何做到的?在我看来,CDN 也只能缓存普通的静态文件。 @luckyee 对于任何流媒体服务器,都不会缓存任何内容。数据在进入时被缓冲并发送给客户端。大多数 CDN 支持在这种模式下运行。 Icecast 可能是一个不错的选择,如果它确实支持渐进式音频流。 @luckyee 这就是 Icecast 所做的一切。 很抱歉又给您添麻烦了。由于我的英文不好,看了Icecast的文档后,我还有两个问题here。谢谢。

以上是关于如何使用 nginx 缓存实时音频流(audio/mpeg)?的主要内容,如果未能解决你的问题,请参考以下文章

如何从WDM流音频源(Realtek HD Audio)捕获

Android 9 Audio系统笔记:AudioFlinger音频流处理流程

没有扩展的 iOS 流音频

Web Audio API:当使用媒体流时,Firefox 中的 FFT 数据与 chrome 中的不同?

Android 9 Audio系统笔记:AudioFlinger音频流处理流程

Android 9 Audio系统笔记:AudioFlinger音频流处理流程