iOS获得视频帧率

时间:2012-05-11 13:06:55

标签: iphone objective-c ios video frame-rate

我想获得特定视频的帧速率。我试着查看AVFoundationAssetsLibrary中的API,例如AVURLAsset或AVAssetReader。他们都没有真正的帮助。有没有人知道Apple的框架/库中的方法来获得帧速率

3 个答案:

答案 0 :(得分:9)

更简单的选择是获取AVAssetTrack并读取其nominalFrameRate属性。 看起来this可以帮助您。

标称帧速率是轨道的帧速率,以每秒帧数为单位。(只读) AVAssetTrack类 @property(nonatomic,readonly)float nominalFrameRate

答案 1 :(得分:3)

对于iOS 7+,您可以使用AVPlayerItemTrack的currentVideoFrameRate属性。它是我见过的唯一一致测量FPS的属性。在HLS流中似乎打破了nominalFrameRate属性。

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;
    }
}

答案 2 :(得分:0)

对于财产currentVideoFrameRate,来自苹果公司的document

  

如果该项目没有在播放,或者该曲目的媒体类型不是   视频,此属性的值为0.0。

它要求该项目处于“播放中”状态,所以我改用nominalFrameRate

它仍然可以在iOS 12,swift 4中使用:

let tracks = asset.tracks(withMediaType: .video)

let fps = tracks?.first?.nominalFrameRate

记住要处理零检查。