Don*_*ind 3 udp tcp network-protocols internet-radio icecast
我似乎没有找到答案,所以我问你。现有的 Icecast2 服务器是否使用 TCP 或 UDP 来广播流数据?我知道它使用自定义的基于 HTTP 的应用程序层协议,所以人们可能会认为它是 TCP,但另一方面它是一个广播应用程序,所以 UDP 对我来说更合乎逻辑。如果它仍然使用 TCP,为什么要这样做?
Icecast 和 SHOUTcast 都将 TCP 用于源流和到终端客户端的流。这有很多好处:
大多数互联网广播电台使用的编解码器不适合丢失大量数据。如果流因丢失或无序数据包而损坏,解码器有时能够重新同步并继续,但许多只会失败。
大多数互联网广播电台没有真正的延迟要求。没有人知道或关心他们是否让音频延迟了几秒钟。实际上,通常会调高缓冲区大小以允许客户端快速开始播放,从而导致 10-30 秒的延迟。
与 HTTP 兼容很重要。我怀疑 Nullsoft 最初构建 SHOUTcast 时,他们的目标是尽可能简单地启动和运行它,因此他们模仿 HTTP 是有道理的。我怀疑 Icecast 和 SHOUTcast 如此流行的原因是为它们编写客户端很容易,因为它本质上是 HTTP。现在基于 Web 的播放器已成为现实(使用 Flash 甚至 HTML5),该协议与 HTTP 兼容至关重要,因为许多浏览器不支持其他流媒体协议。(Flash 有自己的协议,但实现起来并不像 HTTP 那样简单。)如果客户端可以播放从 HTTP 服务器流式传输的文件,则它可以从 Icecast 流式传输(如果 HTTP 实现宽松,则可以使用 SHOUTcast) .
你提到了广播......我不知道你的意思是指 UDP 广播数据包,但那些在互联网上的实践中效果不佳。因此,使用 UDP 的唯一好处是减少开销,但我认为您会看到由于上述原因,对于此类应用程序,少量字节的开销并没有超过 TCP 的好处。
简而言之,这不是一个延迟很重要并且可以使用自定义客户端的电话应用程序。