首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解雇后AVPlayerViewController音频继续在后台播放

解雇后AVPlayerViewController音频继续在后台播放
EN

Stack Overflow用户
提问于 2022-04-28 20:31:40
回答 1查看 75关注 0票数 0

我的目标是:

  1. 记录一个视频
  2. 在一个视图中显示它,并在一个循环
  3. 上播放它,
  4. 将它从视图
  5. 中删除,其中包含一个视频H 210G 211

问题:

步骤1-3起作用。然而,在我切换camera.showMoviePreviewfalse之后,音频继续在后台播放。

下面是我呈现视频的视图:

代码语言:javascript
复制
if camera.showMoviePreview {
                   
      CustomVideoPlayer(url: camera.previewURL)                    
                
}

这是我的AVPlayerViewController

代码语言:javascript
复制
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,但我不确定正确的方法

EN

回答 1

Stack Overflow用户

发布于 2022-04-30 05:36:48

简单地说,你可以用"onDisapear“方法停止视频,

1 .在类(而不是在AVPlayer中)中定义makeUIViewController属性。

2 .将CustomVideoPlayer(url: camera.previewURL)定义为如下视图:

代码语言:javascript
复制
var videoPlayer: some View{
    CustomVideoPlayer(url: camera.previewURL)
}

3 .使用int类:

代码语言:javascript
复制
if camera.showMoviePreview {
   videoPlayer
       .onDisappear {
           camera.videoPlayer.pause()
       }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72049879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档