【问题标题】:How to set volume for AVPlayer如何设置 AVPlayer 的音量
【发布时间】:2020-07-30 16:50:37
【问题描述】:

我正在尝试为 AVPlayer 设置音量,但它似乎不起作用。它占用系统音量并忽略代码中设置的值。以下是我的代码。我们如何设置音量?

let player = AVPlayer(url: URL(string:recordingFileURL)!)
let playerController = AVPlayerViewController()
playerController.player = player
playerController.videoGravity = AVLayerVideoGravity(rawValue: AVLayerVideoGravity.resizeAspectFill.rawValue)

self.present(playerController, animated: true) {
    player.play()
    player.volume = 0.8 // Doesn't have any affect
}

【问题讨论】:

  • 我的假设是上面代码中设置的值应该覆盖系统卷的值。假设系统音量为 0.2,我上面的代码将其设置为 0.8,当播放器播放时,它应该采用 0.8 音量(在代码中设置)而不是 0.2(系统音量)。或者我可能错过了什么?我想做的就是给玩家一个更高的音量值,而不管用户的系统音量级别。
  • 嗯,你的假设是错误的。您不能“覆盖系统卷的值”。想想看。用户故意把声音关小了,你以为你还能爆音吗?那将是残酷的。

标签: ios swift avplayer


【解决方案1】:

player.volume = 0.8

这个属性在 iOS 上最有用的是控制 AVSampleBufferAudioRenderer 相对于其他音频输出的音量,而不是设置绝对音量。

【讨论】:

    【解决方案2】:

    Apple Docs 说这是不可能的。

    该属性用于控制播放器相对于系统音量的音量。在 iOS 中没有编程方式来控制系统音量,但您可以使用 MediaPlayer 框架的 MPVolumeView 类来呈现用于控制系统音量的标准用户界面。

    由于 AVPlayer 的音量是相对于系统音量的,所以您永远不能强制 AVPlayer 播放的音量大于系统音量。

    【讨论】:

      【解决方案3】:

      你在评论中说:

      我的假设是上面代码中设置的值应该覆盖系统卷的值

      这个假设是错误的。如果系统音量为 0.2,而您将播放器的音量设置为 0.8,那么您所做的就是让播放器更柔和(0.16)。正如the documentation 告诉你的那样:

      该属性用于控制播放器相对于系统音量的音量。在 iOS 中没有编程方式来控制系统音量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-04
        • 2011-03-17
        相关资源
        最近更新 更多