Я использую GPUImageMovie для фильтрации и сохранить фильм на моем устройстве, но мое приложение рушится нанаписание фильма с использованием GPUImagemovieWriter аварий приложения
dispatch_sync (videoProcessingQueue, блок);
GPUImageOutput.m Файл. Когда я его отладки Он разбивает на
self.movieWriter = GPUImageMovieWriter (movieURL: movieURL, размер: CGSizeMake (videoAssetTrack.naturalSize.width, videoAssetTrack.naturalSize.height))
Вот мой код:
var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let filePath = paths[0].stringByAppendingString("/image.mov")
let asset: AVURLAsset = AVURLAsset(URL: NSURL(fileURLWithPath: filePath))
let videoAssetTrack: AVAssetTrack = asset.tracksWithMediaType(AVMediaTypeVideo)[0]
//CGAffineTransform videoTransform = CGAffineTransformMakeRotation(self.ValueOrientation);
self.movieFile1 = GPUImageMovie(URL: NSURL(fileURLWithPath: filePath))
self.movieFile1.runBenchmark = true
// self.filterExport = self.filterobject
self.movieFile1.addTarget(self.pixellateFilter)
self.pixellateFilter.removeAllTargets()
let filteredFile: String = paths[0].stringByAppendingPathComponent("/MovieFiltered.m4v")
unlink((filteredFile as NSString).UTF8String)
let movieURL: NSURL = NSURL.fileURLWithPath(filteredFile)
do {
try NSFileManager.defaultManager().removeItemAtPath(filteredFile)
print("File removed")
}catch{
print("Not Removed")
}
self.movieWriter = GPUImageMovieWriter(movieURL: movieURL, size: CGSizeMake(videoAssetTrack.naturalSize.width, videoAssetTrack.naturalSize.height))
self.pixellateFilter.addTarget(self.movieWriter)
self.movieWriter.shouldPassthroughAudio = true
self.movieFile1.audioEncodingTarget = self.movieWriter
self.movieFile1.enableSynchronizedEncodingUsingMovieWriter(self.movieWriter)
self.movieWriter.startRecording()
self.movieFile1.startProcessing()
weak var weakSelf = self
self.movieWriter.completionBlock = {() -> Void in
print("Recording done")
weakSelf!.movieWriter.finishRecording()
}
Я использовал для многих кодов, кроме этого, но всегда сбой приложений в той же точке. Пожалуйста, дайте мне решение. Я использовал этот код тоже .. То же ошибка приходит ...
var paths: [AnyObject] = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let filePath = paths[0].stringByAppendingString("/image.mov")
movieFile = GPUImageMovie(URL: NSURL(fileURLWithPath: filePath))
pixellateFilter = GPUImagePixellateFilter()
movieFile.addTarget(pixellateFilter)
let pathToMovie : String = paths[0].stringByAppendingPathComponent("filtered.mov")
do {
try NSFileManager.defaultManager().removeItemAtPath(pathToMovie)
print("File removed")
}catch{
print("Not Removed")
}
unlink((pathToMovie as NSString).UTF8String)
let movieURL: NSURL = NSURL.fileURLWithPath(pathToMovie)
movieWriter = GPUImageMovieWriter(movieURL: movieURL, size: CGSizeMake(480.0, 640.0))
pixellateFilter.addTarget(movieWriter)
movieWriter.shouldPassthroughAudio = true
movieFile.audioEncodingTarget = movieWriter
movieFile.enableSynchronizedEncodingUsingMovieWriter(movieWriter)
movieWriter.startRecording()
movieFile.startProcessing()
self.movieWriter.completionBlock = {() -> Void in
print("Recording done")
self.pixellateFilter.removeTarget(self.movieWriter)
self.movieWriter.finishRecording()
}
На самом деле я получаю Nil; l Значение в контексте также –