Я использую 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 играть новые предметы в?