使用 AVPlayer 处理流媒体事件
我正在构建一个播放音频流(来自网络广播)的应用程序。
我正在使用 AVPlayer
来实现它。
我想知道当连接速度较慢或用户只是单击“播放”时,您将如何处理
AVPlayer
的“缓冲”。我想检测AVPlayer
正在“缓冲”以显示UIActivityIndicatorView
。在后台运行时出现同样的问题。这种情况下缓冲怎么办?
I'm building an app which plays an audio stream (from a webradio).
I'm using AVPlayer
for it.
I'd like to know how you would handle
AVPlayer's
"buffering" when the connection is slow or when the user just clicked "play". I want to detect thatAVPlayer
is "buffering" to display anUIActivityIndicatorView
.Same question while running in the background. What should I do if buffering in this case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
对于第一个问题
你可以参考我关于这个主题的回答ios avplayer触发器流媒体超出缓冲区
对于第二个,
这是我解决同样问题的方法:
在处理缓冲区空事件的位置添加以下代码:
现在,在缓冲区准备就绪后,您将必须停止此后台任务再次:
ps:任务在我的 .h 文件中声明为 UIBackgroundTaskIdentifier 任务;
For the first question
You can refer to my answer on this topic ios avplayer trigger streaming is out of buffer
For the second
Here is how I solved this same problem:
Inside where you handle the event for buffer empty add this code:
Now you will have to stop this background task after your buffer is ready to go again:
ps: task is declared on my .h file as
UIBackgroundTaskIdentifier task;
我已经找到了这个问题的解决方案。
I have found the solution to this problem.
对于 Swift 3
这对我来说效果很好,也许有帮助,在
addPeriodicTimeObserver
内调用self?.bufferState()
For Swift 3
This works fine for me, maybe it can help, call
self?.bufferState()
insideaddPeriodicTimeObserver
试试这个:
Try this: