首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用AVAudioPlayer关闭视频中的音频?

如何使用AVAudioPlayer关闭视频中的音频?
EN

Stack Overflow用户
提问于 2018-11-23 21:55:52
回答 3查看 671关注 0票数 4

我有一个简单的相机,它可以记录视频,然后切换到videoPreview。里面有一个按钮,可以按回镜头。但是,我这样做的视频音频并没有停止。我如何删除它(而不是静音)以便可以采取新的vid?

贝娄是我尝试过的视频预览代码

代码语言:javascript
复制
    class VideoPlayback: UIViewController {

    //receives url video value from VideoViewController
    var videoURL: URL!

    //place where video gets displayed
    @IBOutlet weak var videoView: UIView!

    var avPlayer = AVPlayer()

    private var playerQueue: AVQueuePlayer!
    private var playerItem1: AVPlayerItem!
    private var playerLooper: AVPlayerLooper!
    private var playerLayer: AVPlayerLayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        print(avPlayer, "avPlayer")
        print("videoURL", videoURL)

        playerItem1 = AVPlayerItem(url: videoURL as URL)
        print(playerItem1, "playerItem1")

        playerQueue = AVQueuePlayer(playerItem: playerItem1)
        print(playerQueue, "player queue")

        playerLayer = AVPlayerLayer(player: playerQueue)
        print(playerLayer, "playerLayer")

        playerLooper = AVPlayerLooper(player: playerQueue, templateItem: playerItem1)
        print(playerLooper, "player looper")

        playerLayer.frame = view.bounds
        playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
        print(videoView, "yruewioq")
        videoView.layer.insertSublayer(playerLayer, at: 0)

        view.layoutIfNeeded()
        self.playerQueue?.play()
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        //attempt at turing audio off
        playerQueue = nil
    }
    @IBAction func cancelVidPreviewButton(_ sender: Any) {
        performSegue(withIdentifier: "cancelVideo", sender: self)
    }
}

更新:

我也尝试过playerLayer.isMuted = true,但我知道它没有isMuted成员

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-24 00:25:41

所以我看到,实际上,这里需要做的是,所有有音频的视频数据都需要移除,如下所示

代码语言:javascript
复制
        self.playerQueue?.removeAllItems()

但是,如果你想摆脱音频,你只需要做.pause(),然后删除数据。这是文档

票数 0
EN

Stack Overflow用户

发布于 2018-11-23 22:18:17

如果我正确理解,你需要确保音频会话在segue之前已经结束。但是,将音量设置为零可能会影响音频会话。

票数 1
EN

Stack Overflow用户

发布于 2018-11-23 22:06:37

可以使用AVPlayer's volume属性来控制AVPlayer的卷。

volume设置为0可以使音频静音。

根据文档

值0.0表示沉默;值1.0 (默认值)表示播放机实例的全部音频音量。

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53453314

复制
相关文章

相似问题

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