2015-10-20 25 views
5

Tôi muốn xử lý video bằng bộ lọc chromakey và đầu ra sẽ được sao chép trên màn hình.Phát lại video GPUHình ảnh và nhanh chóng

Dưới đây là đoạn code tôi phát triển mà không hiển thị bất kỳ video và tôi không thể hiểu tại sao:

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


} 

Trả lời

1

Bạn cũng cần một GPUImageView mà hiển thị các bộ phim và bạn không thể lưu trữ các máy nghe nhạc trong một var địa phương. Hãy thử như sau:.

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

cố gắng ..... bộ phim không chơi :( – Kerby82

+0

không làm việc và không soạn thảo – Kerby82

+0

Như đã đề cập trước đây, tôi đã được trả lời trên điện thoại di động của tôi, xin lỗi vì sự lỗi chính tả tôi chỉ thử nghiệm mã trên và nó hoạt động.Nếu nó không vui lòng đảm bảo thử nghiệm trên một thiết bị và kiểm tra xem video có được đóng gói chính xác hay không – niggeulimann

Các vấn đề liên quan