Автозапуск видео MP4 в UIView, который находится на петле, как GIF? - PullRequest
0 голосов
/ 26 января 2019

После того, как пользователи перейдут на эту конкретную страницу, я хочу, чтобы видео немедленно начало воспроизводиться внутри UIView без элементов управления.Это будет просто петля, как GIF.Это код, который я нашел в github, и он, похоже, не работает.Это просто показывает белый UIView, когда я поднимаю страницу.Мое имя файла также правильное.

import Foundation
import UIKit
import AVKit
import AVFoundation

class RampWallPush: UIViewController {

@IBOutlet weak var videoView: UIView!

var player: AVPlayer?

override func viewDidLoad() {
    super.viewDidLoad()

    // Load video resource
    if let videoUrl = Bundle.main.url(forResource: "small", withExtension: "mp4") {

        // Init video
        self.player = AVPlayer(url: videoUrl)
        self.player?.isMuted = true
        self.player?.actionAtItemEnd = .none

        // Add player layer
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
        playerLayer.frame = view.frame

        // Add video layer
        self.videoView.layer.addSublayer(playerLayer)

        // Play video
        self.player?.play()

        // Observe end
        NotificationCenter.default.addObserver(self, selector: #selector(playerItemDidReachEnd), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.player?.currentItem)
    }
}

// MARK: - Loop video when ended.
@objc func playerItemDidReachEnd(notification: NSNotification) {
    self.player?.seek(to: CMTime.zero)
    self.player?.play()
}

}

1 Ответ

0 голосов
/ 26 января 2019

Ваш код работает, вам нужно убедиться, что файл существует в вашем проекте и .......

    // Load video resource
  if let videoUrl = Bundle.main.url(forResource: "sample", withExtension: "mp4") {
        // exists
  }
  else {

     print("NoFile")
  }

Итак, выберите файл и

enter image description here


Вам нужно поменять кадр

 playerLayer.frame = CGRect(x:0,y:0,width:200,height:300) 
 self.videoView.layer.addSublayer(playerLayer)
 playerLayer.center = videoView.center 

Создано демо Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...