0

Я храню свои видеоролики MP4 в хранилище Google Cloud и пытаюсь воспроизвести их на устройстве iOS с помощью MPMoviePlayerController, но он не воспроизводится. Однако, если я загружаю тот же файл в dropbox для публики, он отлично работает.IOS не воспроизводит URL-адреса из облачного хранилища Google

let videoURLWithPath = "https://storage.googleapis.com/pioctave/577265bce6058511008a39dd/57bc34d5683eb51100173a46-video/pioctave.mp4" 
    print(videoURLWithPath) 
    let videoURL = NSURL(string: videoURLWithPath) 


    moviePlayer = MPMoviePlayerController(contentURL: videoURL) 
    moviePlayer.view.frame = CGRectMake(0.0, 0.0, self.view.frame.size.width, self.header_video_img!.frame.size.height) 

    self.view.addSubview(moviePlayer.view) 
    moviePlayer.fullscreen = false 
    moviePlayer.shouldAutoplay = true 

    moviePlayer.controlStyle = MPMovieControlStyle.Fullscreen 
    moviePlayer.scalingMode = MPMovieScalingMode.AspectFill 

    moviePlayer.play() 

Я использовал тот же файл из GCS в android, он работал нормально. Ниже приведен пример публичного URL-адреса видео.

https://storage.googleapis.com/pioctave/577265bce6058511008a39dd/57bc34d5683eb51100173a46-video/pioctave.mp4

Есть ли какие-либо проблемы заголовка или есть какой-то вопрос в стороне устройства. Пожалуйста помоги.

ответ

0

MPMoviePlayerController устарел. Используйте AVPlayerViewController вместо MPMoviePlayerController.

Вот код:

let videoURL = NSURL(string: "https://storage.googleapis.com/pioctave/577265bce6058511008a39dd/57bc34d5683eb51100173a46-video/pioctave.mp4") 
let player = AVPlayer(url: videoURL! as URL) 
let playerViewController = AVPlayerViewController() 
playerViewController.player = player 
self.present(playerViewController, animated: true) { 
    playerViewController.player!.play() 
} 
+0

это начинается первый 5 сек видео и никогда не идет вперед, что, пожалуйста, вы можете помочь с этим? – paparoch

+0

Добавить наблюдатель игроку пункт: playerItem.addObserver (самость, forKeyPath: "playbackBufferEmpty", варианты: .new, контекст: ноль) playerItem.addObserver (самообеспечение, forKeyPath: "playbackLikelyToKeepUp", варианты: .new, контекст: nil) playerItem.addObserver (self, forKeyPath: "playbackBufferFull", options: .New, context: nil) –

+0

затем выполнить ниже метод: переопределить общедоступный func observValueForKeyPath (keyPath: String ?, ofObject object: AnyObject ?, change: [ Строка: AnyObject] ?, контекст: UnsafeMutablePointer ) { если объект AVPlayerItem { переключатель { ключевого ресурса случай "playbackBufferEmpty": // player.play() случай "playbackLikelyToKeepUp": // Скрыть погрузчик // player.pause() случай "playbackBufferFull": // Скрыть погрузчик // player.pause() } }} –