Как убить прогресс AVQueuePlayer в фоновом режиме, когда ARViewContainer исчезает в swiftUI, и как вызвать функцию stopPlayer, пожалуйста?
как убить прогресс avplayer при увольнении UIView? Я делаю ARView, видеоплеер не убивается при возврате страницы, что мне делать, пожалуйста?
как убить прогресс avplayer при увольнении UIView? Я делаю ARView, видеоплеер не убивается при возврате страницы, что мне делать, пожалуйста?
struct ARViewContainer: UIViewRepresentable {
let arView = ARView(frame: .zero)
func makeCoordinator() -> Coordinator {
Coordinator(parenenter code heret: self)
}
func clear() {
arView.session.pause()
arView.removeFromSuperview()
}
class Coordinator: NSObject, ARSessionDelegate{
var parent: ARViewContainer
var playerLooper: AVPlayerLooper! // should be defined in class
var queuePlayer: AVQueuePlayer!
init(parent: ARViewContainer) {
self.parent = parent
}
func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
guard let imageAnchor = anchors[0] as? ARImageAnchor else {
print("Problems loading anchor.")
return
}
guard let path = Bundle.main.path(forResource: "video", ofType: "mp4") else {
let videoURL = URL(fileURLWithPath: "http://cdn-wallpaper.x.com")
let playerItem = AVPlayerItem(url: videoURL)
queuePlayer = AVQueuePlayer(playerItem: playerItem)
playerLooper = AVPlayerLooper(player: queuePlayer, templateItem: playerItem)
let videoMaterial = VideoMaterial(avPlayer: queuePlayer)
let videoPlane = ModelEntity(mesh: .generatePlane(width: 18, depth: 10, cornerRadius: 0), materials: [videoMaterial])
let anchor = AnchorEntity(anchor: imageAnchor)
anchor.addChild(videoPlane)
parent.arView.scene.addAnchor(anchor)
}
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
guard let imageAnchor = anchors[0] as? ARImageAnchor else {
print("Problems loading anchor.")
return
}
if imageAnchor.isTracked {
queuePlayer.play()
} else {
queuePlayer.pause()
}
}
func session(_ session: ARSession, didRemove anchors: [ARAnchor]) {
print("stopPlayer")
stopPlayer()
}
// stop av player, how to call in ARContainer?
func stopPlayer() {
queuePlayer.pause()
queuePlayer.removeAllItems()
}
}
func makeUIView(context: Context) -> ARView {
arView.session.delegate = context.coordinator
return arView
}
func updateUIView(_ uiView: ARView, context: Context) {}
}
как убить прогресс avplayer при увольнении UIView? Я делаю ARView, видеоплеер не убивается при возврате страницы, что мне делать, пожалуйста?