Initial-Burst HTTP标头 - 单位

时间:2013-01-06 06:20:37

标签: streaming shoutcast internet-radio

我正在实施一个shoutcast无线电客户端。

我的参考客户端将“Initial-Burst”HTTP请求标头发送到960000。 我不知道我的参考客户端的初始缓冲区大小,它是一个iOS应用程序,我没有源代码。我所知道的是,只要用户选择一个频道,它就会立即开始播放。

当我将初始缓冲区大小提高到大约100千字节时,我的无线电不再立即播放,在某些流上等待来自服务器的数据,持续几秒钟。

服务器说它正在运行Icecast 2.3.3-kh3和Linux v1.9.8。 Icecast是一个开源软件,不用说它没有文档。

Initial-Burst标头有哪些单元?字节,位,刻度等?

是否有一些推荐值/最佳做法?

1 个答案:

答案 0 :(得分:1)

我怀疑发生的事情是您要求的数据多于服务器缓冲的数据。如果你要求1MB,但你的缓冲区只有512KB,那么你将接收到来自编码器的数据,直到你的1MB客户端缓冲区填满为止。您可以使用数据包嗅探器进行确认,例如Wireshark。

如果您构建自己的客户端,则应该能够将回放缓冲区大小与标头分开。完成此操作后,您可以将Initial-Burst标题设置为您想要的大小。

另一种可能性(我不太可能,我怀疑)是服务器正在制作服务器端缓冲区并在发送之前将其填充到所请求的大小。这对我来说没有多大意义,但同样,你可以通过数据包嗅探器确认行为。

我所做的是服务器端具有固定的缓冲区大小,并忽略与缓冲区控制相关的任何标头。这允许我尽可能快地刷新大缓冲区,而不依赖于客户端行为。我用自定义代码执行此操作...我不认为这可以在Icecast中配置,但我可能错了。