1

Я делаю приложение для воспроизведения видео, которое воспроизводит видео на моем сервере. Я запускаю приложение через приведенный ниже код.Состояние буфера MPMovieplayercontroller и пауза во время потоковой передачи

var url:NSURL = NSURL(string: "http://download1.mp4mobilemovies.net/Bollywood/Baahubali%20-%20The%20Beginning%20-%20DvdScr/Baahubali%20-%20The%20Beginning%20-%20DvdScr%20-%201.mp4")! 

    self.moviePlayer = MPMoviePlayerController() 
    moviePlayer.movieSourceType = MPMovieSourceType.Streaming 
    self.moviePlayer = MPMoviePlayerController(contentURL: url) 
    self.moviePlayer.prepareToPlay() 
    self.moviePlayer.shouldAutoplay = true 
    self.moviePlayer.stop() 
    self.moviePlayer.view.frame = self.view.frame 
    self.view.addSubview(self.moviePlayer.view) 
    self.moviePlayer.fullscreen = true 
    self.moviePlayer.setFullscreen(true, animated: true) 
    self.moviePlayer.controlStyle = MPMovieControlStyle.Embedded 
    self.moviePlayer.scalingMode = MPMovieScalingMode.AspectFit 
    self.moviePlayer.play() 

Даже у меня есть HUD, который начинает делать индикатор прогресса, когда вид не появлялся, и там я также установить два объекта уведомления, чтобы увидеть playbackstatechange видео, а также состояние загрузки фильма. Изменение состояния воспроизведения работает хорошо. Видео начинает воспроизведение, и через некоторое время он переходит в состояние паузы, и состояние загрузки не изменяется на STALLED или UNKNOWN, так что я знаю, что это состояние буфера. Пожалуйста, советы, как обращаться в состояние буферизации и автозапуск, когда буфер закончить

NSNotificationCenter.defaultCenter().addObserver(self, selector: "videoCanPlay:", name: MPMoviePlayerLoadStateDidChangeNotification, object: nil) 
NSNotificationCenter.defaultCenter().addObserver(self, selector: "playbackchanged:", name:MPMoviePlayerPlaybackStateDidChangeNotification, object: nil) 

func videoCanPlay(notification: NSNotification){ 
    var moviePlayerController = notification.object 
     as! MPMoviePlayerController 
    if(self.moviePlayer?.loadState == MPMovieLoadState.Playable) 
    { 
     // let value = UIInterfaceOrientation.LandscapeLeft.rawValue 
     // UIDevice.currentDevice().setValue(value, forKey: "orientation") 
     // NSLog("Play"); 
     MBProgressHUD.hideAllHUDsForView(self.view, animated: true) 
    } 

/// Это состояние не дозвонились

if(self.moviePlayer?.loadState == MPMovieLoadState.Stalled) 
    { 
     NSLog("stalled"); 
    } 

    if (self.moviePlayer?.loadState == MPMovieLoadState.Unknown) 
    { 
     NSLog("unknown"); 
    } 

} 

ответ

0

Вы можете использовать этот метод, чтобы проверить, если игрок буферизация:

self.moviePlayer?.playableDuration 

Я не проверял ответ, но я думаю, что если playableDuration равен 0, тогда игрок в настоящий момент выполняет буферизацию

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