我目前正在编写一个DLNA服务器,为像Sonos Play 1& 3。
根据HTTP 1.1规范,当您不知道轨道的实际长度时,请不要指定Content-Length
,而只需指定Connection: Close
。
这应该使客户端读取流,直到服务器关闭连接。
这适用于wav和flac流。但对于mp3和ogg流,我需要指定一个Content-Length
来播放它们。
否则,Sonos客户端会立即自行关闭连接。
在我的情况下,它是计算机当前播放的实时流。因此无法知道长度。只要计算机运行,就有内容可以播放。
我目前的解决方案是伪造内容长度并将其设置为荒谬值(100gb)以使流永久播放。
我想知道这种行为,因为它适用于wav和flac,但不适用于mp3和ogg。
我做错了什么?或者这只是偏离HTTP 1.1规范?