2012-06-05 47 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) 

我也試過performSelectorOnMainThread,但我得到了相同的結果。

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

我想知道是否有重用我的AVPlayer對象播放新項目的方法?

回答

0

這是結束了工作:

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

似乎有一些問題,我是如何創造的資產。我只是跳過了資產並直接創建了該項目。