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)")
对不起,如果这不是惯用的,我不知道很快。