我可以看到一些视频轨道的nominalFrameRate,但在 AVFoundation 文档中看不到当前帧。如何获取在 AVPlayer 中播放的曲目的当前帧号?我知道帧速率会有所不同,并且nominalFrameRate 在.m3u8 流中将始终为0.0,但肯定有一种方法可以获取当前播放曲目的帧数,而不必将nominalFrameRate 乘以currentTime?
谢谢。
我可以看到一些视频轨道的nominalFrameRate,但在 AVFoundation 文档中看不到当前帧。如何获取在 AVPlayer 中播放的曲目的当前帧号?我知道帧速率会有所不同,并且nominalFrameRate 在.m3u8 流中将始终为0.0,但肯定有一种方法可以获取当前播放曲目的帧数,而不必将nominalFrameRate 乘以currentTime?
谢谢。
对于 iOS 7+,您可以使用 AVPlayerItemTrack 的 currentVideoFrameRate 属性。它是我见过的唯一一致的属性来衡量 FPS。名义帧率属性似乎在 HLS 流中被破坏,并且总是返回 0.0,正如你提到的。
AVPlayerItem *item = AVPlayer.currentItem; // Your current item
float fps = 0.00;
for (AVPlayerItemTrack *track in item.tracks) {
if ([track.assetTrack.mediaType isEqualToString:AVMediaTypeVideo]) {
fps = track.currentVideoFrameRate;
}
}