2016-05-28 2 views
1

Я использую 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() 
     } 
+0

На самом деле я получаю Nil; l Значение в контексте также –

ответ

0

Очень маленькая ошибка сделано мной я был забыть написать

movieFile.audioEncodingTarget = ноль

Поскольку Мое видео было не содержащий звука. Yup ..

Смежные вопросы