Я уверен, что это довольно простая и распространенная проблема - однако я новичок в программировании и не могу найти ответ на этот вопрос в Интернете. Я пытаюсь создать код, который воспроизводит видео в цикле на фоне приложения. Я создал UIView
и вставил в него видео. Теперь я пытаюсь поставить код за ним и сталкиваюсь с проблемами.
У меня есть два сообщения об ошибке:
'seek (to :)' устарел в iOS 11.0: использовать
-seekToTime: завершениеHandler :, передавая ноль для завершениеHandler, если вам не требуется уведомление о завершении
и после попытки запустить приложение
Thread 1: signal SIGTERM
Я пробовал практически все, включая переписывание всего раздела кода (я действительно запустил его раньше, даже с первой ошибкой, указанной выше), но безрезультатно.
Я слышал в Интернете, что проблема SIGTERM может быть исправлена путем перезапуска, но это не тот случай, и я думаю, что проблема является результатом первой ошибки, которую я объясню позже.
Вот мой код:
import UIKit
import AVFoundation
import AVKit
class ViewController: UIViewController {
@IBOutlet weak var videoView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
private func setupView() {
let path = URL(fileURLWithPath: Bundle.main.path(forResource: "Cafe Video", ofType: "mov")!)
let player = AVPlayer(url: path)
let newLayer = AVPlayerLayer(player: player)
newLayer.frame = self.videoView.frame
self.videoView.layer.addSublayer(newLayer)
newLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
player.play()
player.actionAtItemEnd = AVPlayer.ActionAtItemEnd.none
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.videoDidPlayToEnd(_:)), name: NSNotification.Name(rawValue: "AVPlayerItemDidPlayToEndTimeNotification"), object: player.currentItem)
}
@objc func videoDidPlayToEnd(_ notification: Notification) {
let player: AVPlayerItem = notification.object as! AVPlayerItem
player.seek(to: CMTime.zero)
}
}
Первое сообщение об ошибке связано с самой последней строкой кода (player.seek (to: CMTime.zero).
Я хотел бы иметь возможность запускать мою программу и воспроизводить видео и зацикливаться. Вместо этого я получаю пустой белый экран на симуляторе, ошибку в моей строке player.seek и эту вещь SIGTERM в AppDelegate после попытки запустить приложение.
Любая помощь, которая может быть оказана, будет высоко оценена, даже если она не решит мою проблему как таковую.