Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用AVPlayer的HLS流结束回调_Ios_Swift_Avplayer_Http Live Streaming_Wowza - Fatal编程技术网

Ios 使用AVPlayer的HLS流结束回调

Ios 使用AVPlayer的HLS流结束回调,ios,swift,avplayer,http-live-streaming,wowza,Ios,Swift,Avplayer,Http Live Streaming,Wowza,我正在使用wowza与HLS一起播放直播流。现在,例如,如果有人正在观看直播流,而观看直播流的人停止了它,那么观众端的直播流也应该停止,而不必刷新列表 我尝试的是设置观察者来观察缓冲区和视频停止播放等的状态变化 func addMyObservers() { NotificationCenter.default.addObserver(self, selector: #selector(videoStopped(_:)), name: NSNotification.Name.AVPla

我正在使用wowza与HLS一起播放直播流。现在,例如,如果有人正在观看直播流,而观看直播流的人停止了它,那么观众端的直播流也应该停止,而不必刷新列表

我尝试的是设置观察者来观察缓冲区和视频停止播放等的状态变化

func addMyObservers() {

    NotificationCenter.default.addObserver(self, selector: #selector(videoStopped(_:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self)

    self.addObserver(self, forKeyPath: "playbackLikelyToKeepUp", options: .new, context: nil)
    self.addObserver(self, forKeyPath: "playbackBufferEmpty", options: .new, context: nil)
    self.addObserver(self, forKeyPath: "playbackBufferFull", options: .new, context: nil)
}
现在,如果流已被用户端上的拖缆停止,我会得到
playbackufferemty
的回调,但不会得到
AVPlayerItemDidPlayToEndTime的回调,我想这是可以理解的

一种可能的解决方案是使用推送通知,但我希望避免这种情况(因为无法保证收到通知),另一种解决方案是在后端创建套接字连接,这也是不可能的


有人知道我如何实现当streamer停止录制或直播流结束时查看器UI自动更新吗?

上次我与Wowza讨论时,他们提出了几种确定流何时真正结束的方法。其中之一是检查
statusCode
。如果是404,则流媒体已结束。@MuhammadHassan因为我正在AVPlayer中直接播放m3u8文件中的url,如何确定我得到的
statusCode
?如果你在他们的论坛上有一个讨论,我会很感激一个链接,这样我就可以自己浏览了!恐怕是和他们的技术团队交换了电子邮件。即使你和他们谈论这件事,他们也会提到这是一个解决方案。诀窍是向*.m3u8 URL发出一个简单的GET请求。不过,还有其他解决方案,所以最好先直接与他们联系。我的应用程序有m3u8格式的实时流媒体,但无法获得结束通知。你们中有人有解决方案吗?@Hamed我们最终使用套接字来获取视频结尾的实时更新。但是由于延迟,一些结尾部分确实被剪掉了。