2015-10-20 90 views
5

我想用色度鍵過濾器處理視頻,輸出應該在屏幕上重現。視頻播放GPUImage和swift

下面我開發了沒有顯示任何視頻,我不明白爲什麼代碼:

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


} 

回答

1

你還需要這顯示了電影中的GPUImageView,你不能播放存儲在本地變量。請嘗試以下操作:

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

試圖.....電影不玩:( – Kerby82

+0

沒有工作,沒有編譯 – Kerby82

+0

正如前面提到的,我一直在回答我的手機,遺憾的錯別字我只是測試上面的代碼和它的工作原理,如果不是,請確保在設備上進行測試,並檢查視頻是否正確包裝,祝你好運! – niggeulimann