GPUImage video playback and fast

I want to process a video with a chromakey filter, and the output should be played on the screen.

Below is the code I developed that does not show any video, and I cannot understand why:

override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let aSelector : Selector = "start:" let tapGesture = UITapGestureRecognizer(target: self, action: aSelector) tapGesture.numberOfTapsRequired = 1 view.addGestureRecognizer(tapGesture) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func start(sender: AnyObject) { NSLog("tap pressed") play() } func play(){ let path = NSBundle.mainBundle().pathForResource("glass_buster", ofType: "mp4") let player = AVPlayer() let pathURL = NSURL.fileURLWithPath(path!) NSLog(pathURL.absoluteString) let playerItem = AVPlayerItem(URL: pathURL) player.replaceCurrentItemWithPlayerItem(playerItem) let gpuMovie = GPUImageMovie(playerItem: playerItem) gpuMovie.playAtActualSpeed = true let filter = GPUImageChromaKeyFilter() gpuMovie.addTarget(filter) gpuMovie.playAtActualSpeed = true gpuMovie.startProcessing() player.play() } 
+5
source share
1 answer

You also need a GPUImageView that displays the movie, and you cannot save the player in a local var. Try the following:

 var player: AVPlayer! = nil var playerItem : AVPlayerItem! = nil func play() { let path = NSBundle.mainBundle().pathForResource("glass_buster", ofType: "mp4") player = AVPlayer() let pathURL = NSURL.fileURLWithPath(path!) playerItem = AVPlayerItem(URL: pathURL) player.replaceCurrentItemWithPlayerItem(playerItem) let gpuMovie = GPUImageMovie(playerItem: playerItem) gpuMovie.playAtActualSpeed = true let filteredView: GPUImageView = GPUImageView(); filteredView.frame = self.view.frame self.view.addSubview(filteredView) let filter = GPUImageChromaKeyFilter() gpuMovie.addTarget(filter) gpuMovie.playAtActualSpeed = true filter.addTarget(filteredView) gpuMovie.startProcessing() player.play() } 
+1
source

Source: https://habr.com/ru/post/1234151/


All Articles