Hallo liebes Forum,
ich verwende ein Video, das in einer View im Hintergrund läuft. Das funktioniert sehr gut und auch der Loop funktioniert endlich.
Jetzt würde ich gerne erreichen, dass nach dem Durchlauf des Videos nicht automatisch das gleiche Video gestartet wird, sondern eine Variable typ URL ausgelesen wird und dann das entsprechende Video startet.
Hier mein Code für das Abspielen eines Videos: (Funktioniert gut und hilft eventuell jemandem)
Alles anzeigen
Der Aufruf erfolgt dann durch :
Wie bereits geschrieben, würde ich gerne nach jedem Durchlauf die Videodatei überprüfen , ob es noch die Aktuelle ist, und dann eventuell eine andere im Loop starten.
Würde mich sehr freuen, wenn mir jemand einen Tip geben könnte.
Viele Grüße,
Micha
ich verwende ein Video, das in einer View im Hintergrund läuft. Das funktioniert sehr gut und auch der Loop funktioniert endlich.
Jetzt würde ich gerne erreichen, dass nach dem Durchlauf des Videos nicht automatisch das gleiche Video gestartet wird, sondern eine Variable typ URL ausgelesen wird und dann das entsprechende Video startet.
Hier mein Code für das Abspielen eines Videos: (Funktioniert gut und hilft eventuell jemandem)
Quellcode
- import Foundation
- import SwiftUI
- import AVFoundation
- struct PlayerView: UIViewRepresentable {
- func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<PlayerView>) {
- }
- func makeUIView(context: Context) -> UIView {
- return LoopingPlayerUIView(frame: .zero)
- }
- }
- class LoopingPlayerUIView: UIView {
- private let playerLayer = AVPlayerLayer()
- private var playerLooper: AVPlayerLooper?
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- override init(frame: CGRect) {
- super.init(frame: frame)
- // Load the resource
- let fileUrl = Bundle.main.url(forResource: "IntroVideo", withExtension: "mp4")!
- let asset = AVAsset(url: fileUrl)
- let item = AVPlayerItem(asset: asset)
- // Setup the player
- let player = AVQueuePlayer()
- playerLayer.player = player
- playerLayer.videoGravity = .resizeAspectFill
- layer.addSublayer(playerLayer)
- // Create a new player looper with the queue player and template item
- playerLooper = AVPlayerLooper(player: player, templateItem: item)
- // Start the movie
- player.play()
- }
- override func layoutSubviews() {
- super.layoutSubviews()
- playerLayer.frame = bounds
- }
- }
Der Aufruf erfolgt dann durch :
Wie bereits geschrieben, würde ich gerne nach jedem Durchlauf die Videodatei überprüfen , ob es noch die Aktuelle ist, und dann eventuell eine andere im Loop starten.
Würde mich sehr freuen, wenn mir jemand einen Tip geben könnte.
Viele Grüße,
Micha