我在我的 viewController() 中添加了一個視頻作為背景,我想回圈播放它,或者換句話說,讓它永遠重復。這是所有的代碼:
import UIKit
import AVKit
import AVFoundation
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
let player = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "background", ofType: "mp4")!))
let layer = AVPlayerLayer(player: player)
layer.frame = view.bounds
layer.videoGravity = .resizeAspectFill
layer.repeatCount = .greatestFiniteMagnitude
layer.repeatDuration = .greatestFiniteMagnitude
view.layer.addSublayer(layer)
player.play()
}
}
當我運行應用程式時,它只播放一次,永遠不會重復。有什么建議?謝謝。
uj5u.com熱心網友回復:
一種解決方案是觀察AVPlayerItemDidPlayToEndTime然后簡單地重新啟動視頻。
NotificationCenter.default.addObserver(
forName: .AVPlayerItemDidPlayToEndTime,
object: player.currentItem,
queue: .main
) { [weak player] _ in
player?.seek(to: .zero)
player?.play()
}
不要忘記在不再需要時分離此觀察者。
uj5u.com熱心網友回復:
使用 AVPlayerLooper。它的名字告訴你這正是它的用途。
https://developer.apple.com/documentation/avfoundation/avplayerlooper
uj5u.com熱心網友回復:
一些評論。
- 根據 AVPlayerLayer 檔案:設定一個或另一個。不是都。
如果同時指定了 repeatDuration 和 repeatCount,則行為未定義。
- 一般來說,我一直在努力讓 AVPlayerLayer 使用 repeatCount 或 repeatDuration 方式重復 mp4。相反,我將 AVQueuePlayer 與 AVPlayerLooper 一起使用。歸功于:https : //developer.apple.com/forums/thread/658909
import AVFoundation
var playerQueue: AVQueuePlayer!
var playerLayer: AVPlayerLayer!
var playerLooper: AVPlayerLooper!
private func configLooper(file: String, ext: String) {
guard let videoURL = Bundle.main.url(forResource: file, withExtension: ext) else { return }
playerQueue = AVQueuePlayer()
playerLayer = AVPlayerLayer(player: playerQueue)
let playerItem = AVPlayerItem(url: videoURL)
playerLooper = AVPlayerLooper(player: playerQueue, templateItem: playerItem)
playerLayer.frame = view.bounds
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
view.layer.insertSublayer(playerLayer, below: someOtherView.layer)
playerQueue.play()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/399417.html
