Que*_*yot 19 xcode stream avfoundation ios avplayer
我正在构建一个播放音频流的应用程序(来自webradio).
我正在使用AVPlayer它.
1)我想知道AVPlayer's当连接速度很慢或用户点击"播放"时你将如何处理"缓冲".我想检测出AVPlayer"缓冲"来显示UIActivityIndicatorView.
2)在后台运行时的同样问题.如果在这种情况下缓冲,我该怎么办?
谢谢 !
sci*_*sxp 27
你可以参考我对这个主题的回答ios avplayer触发器流是缓冲区
以下是我解决同样问题的方法:
在处理缓冲区空事件的内部添加以下代码:
if (object == playerItem && [keyPath isEqualToString:@"playbackBufferEmpty"])
{
if (playerItem.playbackBufferEmpty) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"message" object:@"Buffering..."];
if([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
{
task = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(void) {
}];
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您必须在缓冲区准备好再次运行后停止此后台任务:
if (object == playerItem && [keyPath isEqualToString:@"playbackLikelyToKeepUp"])
{
if (playerItem.playbackLikelyToKeepUp)
{
[player play];
if([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
{
[[UIApplication sharedApplication] endBackgroundTask:task];
task = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
ps:任务在我的.h文件中声明为 UIBackgroundTaskIdentifier task;
Nir*_*Nir 10
我找到了解决这个问题的方法.
if (self.avPlayer.currentItem.playbackLikelyToKeepUp == NO)
{
// Show activity indicator
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23661 次 |
| 最近记录: |