【问题标题】:Swift Get Video Frame use AVFoundationSwift Get Video Frame 使用 AVFoundation
【发布时间】:2015-01-21 01:31:30
【问题描述】:

这是我的代码:我想要获取我的视频并将帧数据获取到 SceneKit SCNSphere。

    //NSString videoPath=NSBundle.mainBundle().l
        var videoURL=NSBundle.mainBundle().URLForResource("video", withExtension: "mp4")

        var assetOptions = [AVURLAssetPreferPreciseDurationAndTimingKey : 1]
        videoAsset=AVURLAsset(URL: videoURL, options: assetOptions)
        var error:NSError?

        var videoAssetReader=AVAssetReader(asset: videoAsset, error: &error)

        //var duration = CMTimeGetSeconds(videoAsset.duration)
        //println(videoAsset.duration)
       // println(duration)

        if error != nil
        {
            println(error)
        }

        var tracksArray=videoAsset?.tracksWithMediaType(AVMediaTypeVideo)
        var audio=videoAsset?.tracksWithMediaType(AVMediaTypeAudio)

        println(tracksArray?)
        var videotrack = tracksArray?[0] as AVAssetTrack

        //println(videotrack?.size)
        fps = videotrack.nominalFrameRate
        var videoSetting = [kCVPixelBufferPixelFormatTypeKey : kCVPixelFormatType_32RGBA]

        var videoTrackOutput=AVAssetReaderTrackOutput(track:videotrack as AVAssetTrack , outputSettings:videoSetting)

       // videoTrackOutput.outputSettings=

        if videoAssetReader.canAddOutput(videoTrackOutput)
        {
            println(videoTrackOutput)
            videoAssetReader.addOutput(videoTrackOutput)
            videoAssetReader.startReading()
        }

        var image=GeneralPreview()
        var uiImage=UIImage(CGImage: image)


        if videoAssetReader.status == AVAssetReaderStatus.Reading{

            var sampleBuffer  = videoTrackOutput.copyNextSampleBuffer()
            println(sampleBuffer)

            //var imageData: NSData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer?)
            //var image: UIImage = UIImage(data: imageData)
        }

我只是从 oc 那里学到的。在我的代码中,我无法获取最后一个对象 sampleBuffer 它是 nil ! 我不知道为什么?我只想知道我的方法是否正确?希望得到帮助!

【问题讨论】:

  • 这是调试信息:可选([]) ,输出设置 = { PixelFormatType = 1380401729; }>

标签: video swift null


【解决方案1】:

尝试将 kCVPixelFormatType_32RGBA 更改为 kCVPixelFormatType_32BGRA。这就是我的诀窍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多