Я делаю приложение для воспроизведения видео, которое воспроизводит видео на моем сервере. Я запускаю приложение через приведенный ниже код.Состояние буфера 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");
}
}