我的目标是:
H 210G 211问题:
步骤1-3起作用。然而,在我切换camera.showMoviePreview到false之后,音频继续在后台播放。
下面是我呈现视频的视图:
if camera.showMoviePreview {
CustomVideoPlayer(url: camera.previewURL)
}这是我的AVPlayerViewController
struct CustomVideoPlayer: UIViewControllerRepresentable {
///URL of the video
var url:URL?
func makeUIViewController(context: Context) -> AVPlayerViewController {
let controller = AVPlayerViewController()
let playerLooper: AVPlayerLooper!
let url: URL = url!
let player1 = AVPlayer(url: url)
player1.preventsDisplaySleepDuringVideoPlayback = true
player1.allowsExternalPlayback = true
controller.showsPlaybackControls = false
controller.videoGravity = .resizeAspectFill
controller.player = player1
controller.player?.play()
let playerItem = AVPlayerItem(url: url)
let player = AVQueuePlayer(playerItem: playerItem)
playerLooper = AVPlayerLooper(player: player, templateItem: playerItem)
NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: controller.player?.currentItem, queue: .main)
{ _ in
controller.player?.seek(to: CMTime.zero)
controller.player?.play()
}
return controller
}
func updateUIViewController(_ uiViewController: AVPlayerViewController, context: Context) {
}
}我相信音频会继续播放,因为我没有卸载AVPlayerViewController,但我不确定正确的方法
发布于 2022-04-30 05:36:48
简单地说,你可以用"onDisapear“方法停止视频,
1 .在类(而不是在AVPlayer中)中定义makeUIViewController属性。
2 .将CustomVideoPlayer(url: camera.previewURL)定义为如下视图:
var videoPlayer: some View{
CustomVideoPlayer(url: camera.previewURL)
}3 .使用int类:
if camera.showMoviePreview {
videoPlayer
.onDisappear {
camera.videoPlayer.pause()
}
}https://stackoverflow.com/questions/72049879
复制相似问题