我想获取特定视频的帧速率。我试图查看 AVURLAsset 或 AVAssetReader 中的AVFoundation
API AssetsLibrary
。它们都没有真正的帮助。有谁知道苹果框架/库中获取帧速率的方法
问问题
7959 次
3 回答
9
更简单的选择是获取 AVAssetTrack 并读取它的nominalFrameRate 属性。看起来这可以帮助你。
标称帧速率是轨道的帧速率,以每秒帧数为单位。(只读) AVAssetTrack 类 @property(nonatomic, readonly) 浮动标称帧率
于 2012-06-21T12:56:54.347 回答
4
对于 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;
}
}
于 2015-04-06T18:56:45.960 回答
1
对于属性currentVideoFrameRate
,来自 Apple 的文档:
如果项目没有播放,或者轨道的媒体类型不是视频,则此属性的值为 0.0。
它要求该项目处于“播放”状态,因此我nominalFrameRate
改为使用。
它仍然适用于 iOS 12,swift 4:
let tracks = asset.tracks(withMediaType: .video)
let fps = tracks?.first?.nominalFrameRate
请记住处理 nil 检查。
于 2018-09-24T05:46:41.477 回答