确定 AVPlayer 比特率

Posted

技术标签:

【中文标题】确定 AVPlayer 比特率【英文标题】:Determining AVPlayer bit rate 【发布时间】:2013-03-17 03:45:56 【问题描述】:

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

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

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

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

实际上[logEvents count] 也始终为零。

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

非常感谢。

【问题讨论】:

【参考方案1】:

除了 Ooops 的建议之外,最好注册AVPlayerItemNewAccessLogEntryNotification 通知以检查比特率。

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于确定 AVPlayer 比特率的主要内容,如果未能解决你的问题,请参考以下文章

比特率怎么设置?

Codecs系列HEVC标准:码率控制模型(R-λ Model)

Codecs系列HEVC标准:码率控制模型(R-λ Model)

如何让 Microsoft MPEG4 Source 打开比特率高于 4Gbps 的 MOV

怎么看视频比特率?

帧率码率比特率