切换方向时 AVPlayer 刷新(使用 Firebase Firestore 视频 link)

AVPlayer refreshes when switching orientation (uses Firebase Firestore video link)

我正在开发一个使用 firebase 的视频流应用程序。我有一个 firestore 数据库,其中填充了视频 links,我可以在我的应用程序中引用它(下面代码中的 firebasedb.video 提供了匹配的视频 link)。我正在使用 fullScreenCover 并自动播放视频。我自己测试应用 iPhone,我偶然发现了一个问题,如果我将方向从纵向切换为横向,视频会刷新并从头开始播放。我怀疑 AVPlayer 在切换期间对数据库进行了新的调用,那么有什么办法可以阻止这种情况发生吗?谢谢并期待您的回复!

更新:如果我能看到针对此代码使用 init() 的演示,那将非常有帮助,因为我认为这会解决问题。

@State var firebasedb: movies
@ObservedObject var movies = getMoviesData()
@State private var isPlayed = false

var body: some View {
VStack {
   Button(action: {
         self.isPlayed.toggle()
   }) {
         Image(systemName: "play.circle")
              .font(.system(size: 50, weight: .light))                     
       }
   }
   .fullScreenCover(isPresented: $isPlayed){
                  VStack {
                      let avPlayer = AVPlayer(url: URL(string: firebasedb.video)!)
                      VideoPlayer(player: avPlayer)
                      .onAppear(){
                          avPlayer.play()
                      }
                      .edgesIgnoringSafeArea(.all)

                  }
    }
}

fullScreenCover 的切换方向内容是重建,但是你在里面创建了新的播放器实例,所以 VideoPlayer 已经重置。

要解决此移动avPlayer 在外部某处创建

// make @State or init input
let avPlayer = AVPlayer(url: URL(string: firebasedb.video)!)

// ...

.fullScreenCover(isPresented: $isPlayed){
    VStack {
        VideoPlayer(player: avPlayer)
        .onAppear(){
            avPlayer.play()
        }
        .edgesIgnoringSafeArea(.all)
    }
}