swift 在iOS上使用AVPlayer连接到蓝牙时音频失真

inkz8wg9  于 11个月前  发布在  Swift
关注(0)|答案(1)|浏览(92)

我一直在尝试在蓝牙扬声器上重现视频的音频,但音量很低时音频会失真。视频是用AVPlayer重现的,当它在iOS 13上的设备上播放时,声音是正确的根据我在研究期间看到的一些评论,我添加了代码:

do {
    try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [.mixWithOthers, .allowBluetooth, .allowBluetoothA2DP,.defaultToSpeaker])
    try AVAudioSession.sharedInstance().setActive(true)
            
} catch(let error) {
    print("*** \(error) ***")
    Crashlytics.crashlytics().record(error: error)
}

字符串
我在不同的地方尝试了前面的代码,在AVPlayer初始化之前,初始化之后或在AppDelegate中,结果都是一样的。
一些相关问题:
How to connect the audio to bluetooth when playing using AVPlayer
iOS Swift - Poor audio quality when using Bluetooth external speaker
AVAudioSession setCategory Swift 4.2 iOS 12 - Play Sound on Silent

mspsb9vt

mspsb9vt1#

您想删除.allowBluetooth类别并使用.allowBluetoothA2DP。您不应该同时使用这两个类别。这应该可以修复您的任何音频失真。
allowBluetooth类别使用 HFP(免提配置文件)协议,该协议质量较低,通常用于电话呼叫。
另一方面,allowBluetoothA2DP类别是仅输出。并且用于更高带宽的音频用例。参见Apple的文档:
A2DP是一种立体声、仅输出配置文件,适用于更高带宽的音频用例,如音乐播放。
资料来源:
https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1771735-allowbluetootha2dp
https://developer.apple.com/documentation/avfaudio/avaudiosession/categoryoptions/1616518-allowbluetooth

相关问题