Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想实现黑白视频(在swift)使用GPU图像!!!还希望将该图像保存在文档目录中_Swift_Video - Fatal编程技术网

我想实现黑白视频(在swift)使用GPU图像!!!还希望将该图像保存在文档目录中

我想实现黑白视频(在swift)使用GPU图像!!!还希望将该图像保存在文档目录中,swift,video,Swift,Video,这是我已经尝试过的答案 //我的代码 filter = GPUImageGrayscaleFilter() movieFile.addTarget(filter) let documentsURL1 = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as! NSURL let pat

这是我已经尝试过的答案

//我的代码

        filter = GPUImageGrayscaleFilter()
        movieFile.addTarget(filter)
        let documentsURL1 = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as! NSURL
        let pathToMovie = documentsURL1.URLByAppendingPathComponent("temp.mov") as NSURL
        var fileManager: NSFileManager = NSFileManager.defaultManager()
        var error: NSError
        var  movieURL1 = pathToMovie
               var urlStr: String = "\(movieURL1)"
        NSUserDefaults.standardUserDefaults().setObject(urlStr, forKey: "movieUrl")
        let path = NSBundle.mainBundle().pathForResource("vedio", ofType:"m4v")
        let newFileURL = NSURL.fileURLWithPath(path!)!
        var anAsset = AVAsset.assetWithURL(newFileURL)as!AVAsset
        var videoAssetTrack = anAsset.tracksWithMediaType(AVMediaTypeVideo)[0]as! AVAssetTrack
        var videoAssetOrientation_: UIImageOrientation = .Up
        var isVideoAssetPortrait_: Bool = false
        var videoTransform: CGAffineTransform = videoAssetTrack.preferredTransform
        if videoTransform.a == 0 && videoTransform.b == 1.0 && videoTransform.c == -1.0 && videoTransform.d == 0 {
            videoAssetOrientation_ = .Right
            isVideoAssetPortrait_ = true
        }
        if videoTransform.a == 0 && videoTransform.b == -1.0 && videoTransform.c == 1.0 && videoTransform.d == 0 {
            videoAssetOrientation_ = .Left
            isVideoAssetPortrait_ = true
        }
        if videoTransform.a == 1.0 && videoTransform.b == 0 && videoTransform.c == 0 && videoTransform.d == 1.0 {
            videoAssetOrientation_ = .Up
        }
        if videoTransform.a == -1.0 && videoTransform.b == 0 && videoTransform.c == 0 && videoTransform.d == -1.0 {
            videoAssetOrientation_ = .Down
        }
            var naturalSize: CGSize
            // Video size
        naturalSize = videoAssetTrack.naturalSize
        movieWriter = GPUImageMovieWriter(movieURL: movieURL1, size: naturalSize)

        //filter?.addTarget(self.view as! GPUImageView)
        movieWriter.shouldPassthroughAudio = true
        if anAsset.tracksWithMediaType(AVMediaTypeAudio).count > 0 {
            movieFile.audioEncodingTarget =  movieWriter
        }
    movieFile.audioEncodingTarget = nil
        movieFile.enableSynchronizedEncodingUsingMovieWriter(movieWriter)
        movieWriter.startRecording()
        movieFile.startProcessing()
        movieWriter.completionBlock = {() -> Void in
        self.movieWriter.finishRecording()

//            self.performSelector("back", onThread: NSThread.mainThread(), withObject: nil, waitUntilDone: true)

        }
但我无法将我的视频保存在文档目录中,也会出现错误

由于未捕获异常而终止应用程序 “NSInternalinconsistenceException”,原因:“***-[AVAssetWriter 当状态为3'时,startWriting]无法调用方法


1.可能与崩溃无关,但需要修复:
movieFile.audioEncodingTarget
将始终为零,请仔细查看。。。2.崩溃是关于写作部分的。向我们展示这一部分,它在哪里以及如何实现。Eric D。如果你能和我分享任何示例,那将非常有帮助。如果你在SWIFT中有需要调试的代码,让我们这样做,这就是你来这里的原因。因此,请遵循我的第一条评论建议开始: