2012-06-05 3 views
0

Я использую AVFoundation и MacRuby для обработки воспроизведения видео. У меня нет проблемы при получении видео не играть в моем AVPlayer первоначально используя код ниже:Проблема при использовании replaceCurrentItemWithPlayerItem при использовании MacRuby

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) 

Я также попытался performingSelectorOnMainThread, но я получаю тот же результат.

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

мне интересно, если есть способ, чтобы повторно использовать свой объект AVPlayer играть новые предметы в?

ответ

0

Это то, что в конечном итоге работает:

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

Там, казалось, какая-то проблема с тем, как я создавал активы. Я просто пропустил актив и создал элемент напрямую.

 Смежные вопросы

  • Нет связанных вопросов^_^