2012-06-05 1 views
0

AVFoundation 및 MacRuby를 사용하여 비디오를 처리하고 있습니다. 나는 비디오를 받고 아무 문제가 처음에 아래의 코드를 사용하여 내 AVPlayer를 연주하지해야한다 : 나는 새로운 비디오 재생을 변경하려고 할 때 내가 문제로 실행MacRuby를 사용할 때 replaceCurrentItemWithPlayerItem을 사용할 때의 문제

videoWindow.setFrame(@frame, display:true, animate:true) 
    @content_view = self.videoWindow.contentView 
    @content_view.wantsLayer = true 
    asset = AVAsset.assetWithURL(url)  
    item = AVPlayerItem.new 
    item.initWithAsset(asset) 
    $video = AVPlayer.alloc.initWithPlayerItem(item) 
    @player_layer = AVPlayerLayer.playerLayerWithPlayer($video) 
    @player_layer.Frame = @frame 
    @content_view.layer.addSublayer(@player_layer) 
    @player_layer.videoGravity = AVLayerVideoGravityResize 
    $video.seekToTime(CMTimeMake(4, 1)) 
    $video.play 

입니다. 이렇게하려면 동일한 AVPlayer 개체를 사용하고 replaceCurrentItemWithPlayerItem 명령을 사용하려고합니다. 이 응용 프로그램을 실행하려고하면 응용 프로그램이 응답하지 않습니다.

asset2 = AVAsset.assetWithURL(@url2) 
    item2 = AVPlayerItem.new 
    item2.initWithAsset(asset2) 
    $video.pause 
    $video.replaceCurrentItemWithPlayerItem(item2) 

나는 또한 PerformAnMainThread를 수행했지만 동일한 결과를 얻습니다.

$video.performSelectorOnMainThread('replaceCurrentItemWithPlayerItem:', withObject:item2, waitUntilDone:true) 

AVPlayer 개체를 다시 사용하여 새 항목을 재생하는 방법이 있는지 궁금합니다.

item = AVPlayerItem.playerItemWithURL(@url) 
$video.replaceCurrentItemWithPlayerItem(item) 

내가 자산을 만드는 상황을 몇 가지 문제가있는 듯 :

답변

0

이 작동 결국 것입니다. 방금 자산을 건너 뛰고 항목을 직접 만들었습니다.