【问题标题】:Objective c Check when HLS has stopped streamingObjective c 检查 HLS 何时停止流式传输
【发布时间】:2017-06-20 10:15:09
【问题描述】:

如何检查 HLS 何时停止流式传输?

我的代码:

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
 {
     NSHTTPURLResponse *tempResponse = (NSHTTPURLResponse *) response;

     if (error || [tempResponse statusCode] != 200)
     {
         //the video has stopped, do my stuff
     }
 }];

目前的问题是即使视频已经明显停止流式传输,视频播放器也完全停止。它仍然返回一个 statusCode = 200,告诉我视频仍在播放。如何以正确和准确的方式实施它? 谢谢

【问题讨论】:

  • HTTP状态码与视频是否播放无关。解析 HLS 播放列表。
  • 您能详细说明您的建议吗?如果状态码与它无关,那么正确的方法可能是什么?
  • 正如我所说,解析您从那里的服务器获得的 HLS 播放列表数据。这将告诉您信息流中发生了什么。

标签: objective-c nsurlconnection http-live-streaming


【解决方案1】:

当您提出请求时,您将获得 HLS 播放列表。服务器状态码没有任何意义,因为它只是 HTTP 状态码,无论播放状态如何,您都将成功获得播放列表,至少在一段时间内。

如果流式传输已结束,HLS 播放列表将包含结束标记:

#EXT-X-ENDLIST

更多信息请访问Apple's documentation

请注意,播放列表会告诉您流式传输是否结束,而不是播放是否停止。列表中可能还有很多视频,要知道 播放 是否停止的唯一方法是询问正在播放的组件。

【讨论】:

  • “如果流式传输已结束,HLS 播放列表将包含结束标记”,我该如何检查? “EXT-X-ENDLIST”这个会在哪里返回?
  • @bubibu 还在你的代码中下载的数据中
  • #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=722000, 这是返回给我的数据,我找不到#EXT-X-ENDLIST跨度>
  • 如果这是唯一的东西,那么就没有流
猜你喜欢
  • 2019-03-25
  • 2016-08-11
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多