如果我在Swift中有一个MPMoviePlayerController:
MPMoviePlayerController mp = MPMoviePlayerController(contentURL: url)
有没有办法获取位于
url
的视频中的帧数?如果没有,还有其他方法可以确定帧数吗? 最佳答案
我认为MPMoviePlayerController
不能帮助您。
使用AVAssetReader
并计算返回给您的CMSampleBuffer
的数量。您可以将其配置为甚至不解码帧,从而有效地解析文件,因此它应该快速且内存有效。
就像是
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)")
抱歉,这不是惯用语,我不知道是不是很快。
关于ios - iOS确定视频中的帧数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29506411/