我已经建立了一个音频流mp3
文件,每次客户端点击音频时,它都会收到如下内容:
但它所做的只是播放 1 分钟的样本,而不是 120 分钟
我在这里做错了什么?
不能 100% 确定,因为您没有提供代码或示例流来测试,但您对 HTTP 范围请求的处理已损坏。
在您的示例请求中,客户端发送Range: bytes=0-
,并且您的服务器以 1MiB 响应进行响应:
-
Content-Length: 1048576
(又名:1 MiB)
Content-Range: 0-1048575/...
这是错误的,客户没有要求这个!它确实要求bytes=0-
,表示从位置 0 到整个流末尾的所有数据(请参阅http 1.1 RFC),即响应等于 1,没有任何Range
。 (IIRC,Firefox 仍然发送Range: bytes=0-
以检测服务器是否首先处理范围)。
这一点,结合Content-Length
,导致客户端(Firefox)认为整个资源大小只有 1MiB,而不是实际大小。我想你的测试流的前 1 MiB 会输出 1:06 的音频。
PS: The Content-Duration
header(又名 RFC 3803)是浏览器通常根本不实现并且只是忽略的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)