如何更新在SwiftUI的AVPlayerLayer上播放的视频?

如何更新在SwiftUI的AVPlayerLayer上播放的视频?,swift,xcode,mvvm,binding,swiftui,Swift,Xcode,Mvvm,Binding,Swiftui,我在主ContentView中有一个名为url的@State变量,它是mp4文件的源。我如何修改PlayerView或VideoView(两者都在下面),以便在ContentView中的url发生更改时,VideoView会自动更新以在url处播放新视频 通过在VideoView中添加协调器,我感觉自己走上了正确的道路,但这是我在苹果的教程中看到的,我真的不知道如何使用它 PlayerView.swift 导入UIKit 进口AVKit 类PlayerView:UIView{ private l

我在主ContentView中有一个名为url的@State变量,它是mp4文件的源。我如何修改PlayerView或VideoView(两者都在下面),以便在ContentView中的url发生更改时,VideoView会自动更新以在url处播放新视频

通过在VideoView中添加协调器,我感觉自己走上了正确的道路,但这是我在苹果的教程中看到的,我真的不知道如何使用它

PlayerView.swift

导入UIKit
进口AVKit
类PlayerView:UIView{
private let playerLayer=AVPlayerLayer()
私有变量playerLooper:AVPlayerLooper?
init(frame:CGRect,url:url){
super.init(frame:frame)
//获取资产并从中创建项目
let asset=AVAsset(url:url)
let item=AVPlayerItem(资产:资产)
//使用传入的URL创建视频播放器。
let player=AVQueuePlayer()
//将玩家添加到我们的玩家层
playerLayer.player=玩家
playerLayer.videoGravity=.resizeAspect//调整内容大小以填充整个视频层。
playerLayer.backgroundColor=UIColor.black.cgColor
layer.addSublayer(playerLayer)
//创建新的球员活套
playerLooper=AVPlayerLooper(玩家:玩家,模板项目:项目)
//开始电影
player.volume=0
player.play()
}
必需初始化?(编码器:NSCoder){
super.init(编码器:编码器)
}
覆盖func布局子视图(){
super.layoutSubviews()
playerLayer.frame=边界
}
}
视频视图 (包装纸)

导入快捷界面
进口AVKit
结构VideoView:UIViewRepresentable{
@绑定var-videoURL:URL
func makeCoordinator()->Coordinator{
协调员(自我)
}
func makeUIView(上下文:context)->UIView{
返回PlayerView(帧:.0,url:videoURL)
}
func updateUIView(uPlayerView:UIView,context:context){
}
类协调器:NSObject{
var父对象:VideoView
初始化(视频视图:视频视图){
self.parent=videoView
}
}
}