我想使用 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/