2

我了解任何 HLS(HTTP Live Streaming)服务器都需要字节范围支持。

我们通过 localhost/loopback 服务器在我们的 iOS 应用程序中提供媒体文件,使用 C 中的套接字、fgets 读取数据和 fprintf 写回。

(使用环回服务器的要求是不可变的)

我们使用 MPMoviePlayerController 进行播放,它首先正确发送和接受范围请求/响应。例如,第一组请求/响应是:

Request 1
GET /internal_path/index.m3u8 HTTP/1.1
Host: 127.0.0.1:9019
Range: bytes=0-1
X-Playback-Session-Id: 454D2A01-2113-457A-AA6B-9AC841B37D2E
Accept-Encoding: identity
Accept: /
Accept-Language: en-us
Connection: keep-alive
User-Agent: AppleCoreMedia/1.0.0.10A403 (iPhone Simulator; U; CPU OS 6_0 like Mac OS X; en_us)

Response 1
HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Range: bytes 0-1/338
Content-Type: application/x-mpegURL
Content-Length: 2
Connection: keep-alive

Request 2
GET /internal_path/index.m3u8 HTTP/1.1
Host: 127.0.0.1:9019
Range: bytes=0-337
X-Playback-Session-Id: 454D2A01-2113-457A-AA6B-9AC841B37D2E
Accept-Encoding: identity
Accept: /
Accept-Language: en-us
Connection: keep-alive
User-Agent: AppleCoreMedia/1.0.0.10A403 (iPhone Simulator; U; CPU OS 6_0 like Mac OS X; en_us)

Response 2
HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Range: bytes 0-337/338
Content-Type: application/x-mpegURL
Content-Length: 338
Connection: keep-alive

然而,尽管服务器向请求发送了正确的 Range 响应,但对 index.m3u8 和 TS 文件的后续请求会忽略 Range 标头。

响应中发送的标头中是否缺少某些数据,这可能导致玩家相信 localhost 服务器不支持 Range 请求?有什么完全错误的,我没有看到吗?

谢谢。

4

0 回答 0