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

5

AVPlayer中,即使url流同时包含音频和视频,也有办法仅播放音频吗?


AVPlayer用于播放视频文件,如果你同时拥有音频和视频文件,它可以同时播放两者。如果你想停止播放视频,则最好使用AVAudioPlayer仅播放音频。 - Himanshu Moradiya
1
当播放视频时,我想切换到音频。如果我创建AVAudioPlayer,它不会从开始播放吗?我想在音频和视频之间平滑切换。 - user1960169
2个回答

2
你可以这样做。我已经通过本地mp4视频进行了验证。在AVPlayerItem加载它们后,您必须禁用视频轨道。
最简单的实现如下所示。
let item = AVPlayerItem(url: url)
var token: NSKeyValueObservation!
token = item.observe(\.tracks) { item, _ in
    item.tracks
        .filter { $0.assetTrack?.mediaType == .video }
        .forEach { $0.isEnabled = false }
    token.invalidate()
}
let player = AVPlayer(playerItem: item)
player.play()

另外,您可以添加一个虚拟视频输出。但这仍然会消耗资源。

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

0

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


如果我这样做,它是否仍将消耗播放两个视频所需的带宽? - user1960169
1
很不幸,您无法即时从流中提取仅音频轨道。 - Max Pevsner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接