2015-08-16 5 views
0

Я играю видео:MPMoviePlayerController переключения видео

let path = NSBundle.mainBundle().pathForResource("Video", ofType:"mp4") 
let url = NSURL.fileURLWithPath(path!) 
moviePlayer = MPMoviePlayerController(contentURL: url) 
if let player = moviePlayer { 
    player.view.frame = self.view.bounds 
    player.prepareToPlay() 
    player.scalingMode = .AspectFill 
    player.controlStyle = .None 
    self.view.addSubview(player.view) 
} 

, и я хочу, чтобы заменить это другое видео при нажатии кнопки:

@IBAction func aButtonIsPressed(sender: AnyObject) { 
    let path = NSBundle.mainBundle().pathForResource("Another Video", ofType:"mp4") 
    let url = NSURL.fileURLWithPath(path!) 
    moviePlayer = MPMoviePlayerController(contentURL: url) 
    if let player = moviePlayer { 
     player.view.frame = self.view.bounds 
     player.prepareToPlay() 
     player.scalingMode = .AspectFill 
     player.controlStyle = .None 
     self.view.addSubview(player.view) 
    } 
} 

Когда я нажимаю на кнопку воспроизведения видео , но, похоже, задержка добавляет новое видео, что дает ему прерывистый переход. Есть ли способ свести к минимуму эту задержку? Я мог бы попробовать добавить еще один MPMoviePlayerController, чтобы предварительно загрузить второе видео, но из некоторого тестирования я нашел, что строка, вызывающая отруб, находится здесь.

self.view.addSubview(player.view) 

Могу ли я сохранить первое воспроизведение видео до линии выше «didFinish»? Это было бы прекрасно.

ответ

0

Вы создаете новый MPMoviePlayerController объект, поэтому вы получаете эту проблему, вы должны использовать тот же объект и который уже играет объект и просто установить contentURL свойства нового ресурса URL,

Если вы установите когда фильм воспроизводится, этот фильм приостанавливает , и начнется загрузка нового фильма. Новый фильм начинает играть в начиная

Для получения более детальной информации посетите эту link

+0

Хороший материал! Есть ли способ предварительной загрузки на один и тот же объект? Есть еще черный экран, который появляется при загрузке фильма. –

+0

Нет, вы не можете этого сделать, но вы можете слушать stateChangeNotification и показывать изображение сверху или буферизировать анимацию до следующего запуска –

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