gpt4 book ai didi

ios - 使用 AVPlayer 处理流媒体事件

转载 作者:IT王子 更新时间:2023-10-29 08:08:20 28 4
gpt4 key购买 nike

我正在构建一个播放音频流(来自网络广播)的应用。

我正在为此使用 AVPlayer

  1. 我想知道当连接速度较慢或用户刚刚单击“播放”时,您将如何处理 AVPlayer 的“缓冲”。我想检测 AVPlayer 正在“缓冲”以显示 UIActivityIndi​​catorView

  2. 在后台运行时遇到同样的问题。这种情况下缓冲怎么办?

最佳答案

第一个问题

这个话题可以引用我的回答ios avplayer trigger streaming is out of buffer

第二个

下面是我解决同样问题的方法:

在处理缓冲区空事件的地方添加这段代码:

    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) {
}];
}
}
}

现在您必须在缓冲区准备好再次运行后停止此后台任务:

if (object == playerItem && [keyPath isEqualToString:@"playbackLikelyToKeepUp"])
{
if (playerItem.playbackLikelyToKeepUp)
{
[player play];

if([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
{
[[UIApplication sharedApplication] endBackgroundTask:task];
task = 0;
}
}
}

ps:任务在我的 .h 文件中声明为 UIBackgroundTaskIdentifier task;

关于ios - 使用 AVPlayer 处理流媒体事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366005/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com