2015-10-20 13 views
5

Desidero elaborare un video con il filtro chromakey e l'output dovrebbe essere riprodotto sullo schermo.Riproduzione video GPUImmagine e swift

Di seguito il codice che ho sviluppato che non mostra alcun video e non riesco a capire perché:

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() 


} 

risposta

1

È inoltre necessario un GPUImageView che visualizza il film e non è possibile memorizzare il giocatore in un var locale. Provare quanto segue:.

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() 
} 
+0

provato ..... il filmato non viene riprodotto :( – Kerby82

+0

non funziona e non la compilazione – Kerby82

+0

Come accennato prima, sono stato rispondendo sul mio cellulare, mi spiace per gli errori di battitura ho appena provato il codice sopra e funziona.Se non si prega di garantire il test su un dispositivo e controllare se il video è correttamente imballato.in buona fortuna! – niggeulimann