iOS确定video中的帧数

如果我在Swift中有一个MPMoviePlayerController:

MPMoviePlayerController mp = MPMoviePlayerController(contentURL: url) 

有没有一种方法可以得到位于url的video中的帧数? 如果没有,有没有其他方法来确定帧数?

我不认为MPMoviePlayerController可以帮助你。

使用AVAssetReader并计算返回给您的CMSampleBuffer的数量。 你可以configuration它甚至不解码帧,有效地parsing文件,所以它应该是快速和内存效率。

就像是

  var asset = AVURLAsset(URL: url, options: nil) var reader = AVAssetReader(asset: asset, error: nil) var videoTrack = asset.tracksWithMediaType(AVMediaTypeVideo)[0] as! AVAssetTrack var readerOutput = AVAssetReaderTrackOutput(track: videoTrack, outputSettings: nil) // NB: nil, should give you raw frames reader.addOutput(readerOutput) reader.startReading() var nFrames = 0 while true { var sampleBuffer = readerOutput.copyNextSampleBuffer() if sampleBuffer == nil { break } nFrames++ } println("Num frames: \(nFrames)") 

对不起,如果这不是惯用的,我不知道很快。