我想实现黑白视频(在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中有需要调试的代码,让我们这样做,这就是你来这里的原因。因此,请遵循我的第一条评论建议开始: