如何仅在 AVPlayer 中的视频文件中播放音频

How to play Audio only in a video file in AVPlayer

即使 url 流既有音频又有视频,有没有办法只在 AVPlayer 中播放音频?

将您的视频播放器大小设为 0x0 或将其放在屏幕之外。

可以。我已经通过本地 mp4 视频进行了验证。 AVPlayerItem 加载后,您必须禁用视频轨道。

最简单的实现如下所示。

let item = AVPlayerItem(url: url)
var token: NSKeyValueObservation!
token = item.observe(\.tracks) { item, _ in
    item.tracks
        .filter { [=10=].assetTrack?.mediaType == .video }
        .forEach { [=10=].isEnabled = false }
    token.invalidate()
}
let player = AVPlayer(playerItem: item)
player.play()

或者,您可以添加虚拟视频输出。但是,这仍然会消耗资源。

let item = AVPlayerItem(url: url)
item.add(AVPlayerItemVideoOutput())
let player = AVPlayer(url: item)