iOS确定视频中的帧数

Oli*_*ryn 4 video video-processing mpmovieplayercontroller ios swift

如果我在Swift中有一个MPMoviePlayerController:

MPMoviePlayerController mp = MPMoviePlayerController(contentURL: url)
Run Code Online (Sandbox Code Playgroud)

有没有办法可以获得视频中的帧数url?如果没有,还有其他方法来确定帧数吗?

Rhy*_*man 8

我认为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)")
Run Code Online (Sandbox Code Playgroud)

对不起,如果这不是惯用语,我不知道很快.