Video im Hintergrund spielen und andere Datei auswählen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Video im Hintergrund spielen und andere Datei auswählen

    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)

    Quellcode

    1. import Foundation
    2. import SwiftUI
    3. import AVFoundation
    4. struct PlayerView: UIViewRepresentable {
    5. func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<PlayerView>) {
    6. }
    7. func makeUIView(context: Context) -> UIView {
    8. return LoopingPlayerUIView(frame: .zero)
    9. }
    10. }
    11. class LoopingPlayerUIView: UIView {
    12. private let playerLayer = AVPlayerLayer()
    13. private var playerLooper: AVPlayerLooper?
    14. required init?(coder: NSCoder) {
    15. fatalError("init(coder:) has not been implemented")
    16. }
    17. override init(frame: CGRect) {
    18. super.init(frame: frame)
    19. // Load the resource
    20. let fileUrl = Bundle.main.url(forResource: "IntroVideo", withExtension: "mp4")!
    21. let asset = AVAsset(url: fileUrl)
    22. let item = AVPlayerItem(asset: asset)
    23. // Setup the player
    24. let player = AVQueuePlayer()
    25. playerLayer.player = player
    26. playerLayer.videoGravity = .resizeAspectFill
    27. layer.addSublayer(playerLayer)
    28. // Create a new player looper with the queue player and template item
    29. playerLooper = AVPlayerLooper(player: player, templateItem: item)
    30. // Start the movie
    31. player.play()
    32. }
    33. override func layoutSubviews() {
    34. super.layoutSubviews()
    35. playerLayer.frame = bounds
    36. }
    37. }
    Alles anzeigen

    Der Aufruf erfolgt dann durch :

    Quellcode

    1. PlayerView()
    2. .frame(width: geo.size.width, height: geo.size.height)
    3. .overlay(Color.black.opacity(0.2))
    4. .blur(radius: 2)
    5. // var geo wurde vorher durch einen GeometryReader bereitgestellt

    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
  • Hallo 322,
    nein, dafür würde ich das Forum nicht bemühen.

    Der Name oder URL des Videos liegt in einer Variablen. Je nachdem welches Video dort verlinkt ist, soll bei dem nächsten Durchlauf das jeweilige Video gestartet werden.
    Ist dieses Video durchgelaufen, dann starte das Video, welches jetzt in der URL verlinkt ist.
    Die Abfolge der Videos ändert sich also ständig.

    Ist für eine Trainings App, wo zu der momentanen Übung das passende Video mit der aktuellen Übung im Hintergrund laufen soll.

    Grüße,
    Micha