如何使用AVFoundation获取在iOS中播放的视频的当前帧?

时间:2013-10-28 21:34:32

标签: ios objective-c cocoa avfoundation

我可以看到某些视频轨道的nominalFrameRate,但AVFoundation文档中没有当前帧。如何在AVPlayer中播放轨道的当前帧编号?我知道帧速率会有所不同,而且nommrameRate在.m3u8流中总是为0.0,但肯定必须有办法获得当前播放曲目的帧号而不必将nominalFrameRate乘以currentTime吗?

感谢。

1 个答案:

答案 0 :(得分:0)

对于iOS 7+,您可以使用AVPlayerItemTrack的currentVideoFrameRate属性。它是我见过的唯一一致测量FPS的属性。在HLS流中,nominalFrameRate属性似乎已被破坏,并且如您所述,它总是返回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;
    }
}