4

我正在播放实时音频流AVPlayerAVPlayerItem并尝试确定流的当前比特率。我在网上搜索并找到了这个帮助: Determening MPMovieController bit-rate

受上述线程的启发,我尝试使用以下代码计算它:

NSArray *logEvents=playerItem.accessLog.events;
AVPlayerItemAccessLogEvent *event = (AVPlayerItemAccessLogEvent *)[logEvents lastObject];
double bitRate=event.observedBitrate;

但是当在计时器内检查时,该变量bitRate始终为零。

事实上[logEvents count]也总是为零。

你能告诉我这项技术有什么问题吗?

非常感谢。

4

2 回答 2

4

除了 Ooops 的建议之外,注册AVPlayerItemNewAccessLogEntryNotification通知以检查比特率可能是明智的。

由于访问日志数组不符合 KVO,使用通知将允许您不使用计时器来检查更新,并且您不必担心等待播放器项目准备好。如果事件被触发得太频繁,您可以选择忽略一些。

于 2015-02-17T18:14:02.117 回答
0

方法没有问题。检查您的 playerItem 是否实际加载。在 playerItem 被“访问”之前,accessLog 为 nil。在您的播放器变为 AVPlayerStatusReadyToPlay 后尝试获取 accessLogs,您将获得日志。

于 2013-03-22T03:24:24.647 回答