【问题标题】:MPMoviePlayerController reconnecting multiple timesMPMoviePlayerController 多次重新连接
【发布时间】:2011-10-08 00:01:05
【问题描述】:

我有一个简单的 HTTP 服务器正在运行,它几乎只是以相同大小的块提供 MP3 文件。我正在编写一个 iOS 应用程序(用于测试目的),它基本上采用 URL 并通过MPMovieController 流式传输文件。这是我的示例代码:

MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] init];
[mp setMovieSourceType:MPMovieSourceTypeStreaming];
mp.contentURL = [NSURL URLWithString:@"http://127.0.0.1:8080"];
[mp play];

它有效。但是:在我的 http 服务器上,我看到了多个连接(第一个立即中断,第二个通常流到最后,尽管有时会有第三个连接)。

我知道这不是服务器问题,因为当我这样做时:

NSData *myData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://127.0.0.1:8080"]];

...那么只有 1 个连接完成读取并断开连接。

问题是:为什么 MPMoviePlayerController 需要在完成读取文件之前建立和断开这些连接,为什么不继续等待更多数据写入套接字?我找不到任何可以解释这一点的相关文档:(

附:如果你好奇我为什么需要这个,这里有一个简短的解释:我正在尝试模拟现实生活中的网络场景,其中 MPMovieController 以块的形式接收字节,中间有小的随机长度延迟

【问题讨论】:

  • 我对 iOS 开发一点也不熟悉,所以请用一磅盐...但是您是否考虑过 MPMoviePlayerController 可能正在重新连接,因为它没有足够的数据继续玩?我也很好奇重新连接之间的时间,以及它们与发送的块的关系。当您使用更大的块时,问题会减轻还是完全消失?能否发一个数据包捕获,让我们看看这个流是否有什么奇怪的地方?
  • 布拉德,谢谢您的指导。我将检查您提到的内容,并希望得出一个有意义的结论。我会尽快回复详细信息
  • 要检查的另一件事是确保流没有严重损坏。如果您在这里或那里丢掉一个字节,播放器将很难同步到流。

标签: iphone objective-c media-player mpmovieplayercontroller audio-streaming


【解决方案1】:

您需要修改您的服务器并添加对HTTP 206 Partial Content 请求/响应的支持。 iOS 以这种方式通过 HTTP 请求电影数据。

【讨论】:

  • 是的,这就是我最终不得不做的事情......我希望最小化/简化服务器,但电影控制器坚持要求字节范围。感谢乔纳森的确认
猜你喜欢
  • 2015-09-23
  • 2019-11-20
  • 2014-09-23
  • 2016-06-26
  • 2016-06-26
  • 2021-12-30
  • 1970-01-01
  • 2016-05-10
  • 2013-05-05
相关资源
最近更新 更多