ios - 查看 AVPlayer 是否正在从互联网加载或播放 mp3

标签 ios avplayer

我想使用 AVPlayer 从互联网流式传输 .mp3

[[AVPlayer alloc] initWithURL:url];

除了我无法判断播放器是在加载(缓冲)还是在播放之外,这一切都有效吗? 我曾尝试在许多属性上使用 KVO,但似乎没有一个能为我提供一种简单的方法来确定 AVPlayer 当前是否正在播放音频或是否正在加载数据。这让我发疯。

提前感谢您的建议

最佳答案

您可以通过创建周期性时间观察(使用 addPeriodicTimeObserverForInterval:queue:usingBlock:)来检测缓冲何时完成以及播放何时开始,以检测播放时间何时开始移动。例如:

AVPlayer *player;

// allocate AVPlayer and start playing

__weak PlayerController *blockSelf = self;
id observerToken = [player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(1.0, NSEC_PER_SEC)
                                                              queue:nil
                                                         usingBlock:^ (CMTime time)
                    {
                        if (CMTimeGetSeconds(time) > 0.0)
                        {
                            // done buffering, should be playing now

                            [player removeTimeObserver:[blockSelf playerTimeObserverToken]];
                            [blockSelf setPlayerTimeObserverToken:observerToken:nil];
                        }
                    }];

[self setPlayerTimeObserverToken:observerToken]; // Keep a reference to the token for later use in block.

关于ios - 查看 AVPlayer 是否正在从互联网加载或播放 mp3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472901/

相关文章:

ios - 我的应用程序不再支持 ipad,当我上传我的应用程序时,它会导致 Xcode 或 iTunes Connect 错误地拒绝我的更新

iphone - AVPlayer 视频空白但能听到声音

ios - 尝试从下向上而不是自上而下为 UIView 高度设置动画

ios - 在 View 中使用 AVPlayer 播放多个视频

ios - 无法使用点符号快速访问函数成员

ios - UITextview If条件并添加 `+`符号

iphone - 如何安全地使用最近才引入 iOS 的对象的属性?

使用 kvo 的快速协议(protocol)扩展

swift - AVQueuePlayer 当前项目已更改

ios - 在 iOS 13 上,AVPlayer 为此 HLS 视频选择纯音频流。我可以控制这种行为,而是让它加载视频+音频吗?