[英]AudioKit v5 output problems, no sound when AVAudioSession defaultToSpeaker is used
[英]Keep bluetooth sound when initializing AVAudioSession
我快要瘋了。
我有一個錄音應用程序。 我遇到了一個問題,當我打開我的應用程序時,如果我正在藍牙設備上聽音樂,它會自動路由回到手機內置揚聲器。
無論如何,我希望一切都保持不變。 即使我開始錄制,如果用戶正在收聽藍牙音箱上的某些內容,請繼續這樣做。 用戶有耳機嗎? 保持音樂在那里。 請保持原樣。
這就是我目前正在初始化會話的方式:
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers | AudioSessionCategoryOptionAllowBluetooth
error: nil];
我允許它播放,錄制,與其他人混音並允許藍牙,那么為什么要將音頻輸出重新路由回內置揚聲器?
謝謝
編輯於5月30日
我設法得到更好的東西,但仍然缺少一些東西。
如果我添加這一行:
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
音樂留在藍牙設備但聽起來很糟糕。
根據這個答案: https : //stackoverflow.com/a/18541874/517688這是因為
EnableBluetoothInput會根據此影響輸入和輸出。 還要記住,由於藍牙輸入設備的限制,音頻將以8000 Hz的頻率播放
因此,在使用藍牙設備時,沒有辦法保持一切不變,而不會扭曲聲音?
在iOS 10中,Apple添加了選項AVAudioSessionCategoryOptionAllowBluetoothA2DP
。 他們還改變了AudioSessionCategoryOptionAllowBluetooth
的含義,只允許使用HFP藍牙配置文件進行輸出,這是您獲得低質量音頻輸出的地方。
如果您使用此新選項代替代碼段中的AudioSessionCategoryOptionAllowBluetooth
選項,它將允許高質量輸出但不允許低質量音頻輸出。
這是選項的在線文檔,但不幸的是,沒有在線新的iOS 10選項的描述。 您可以在AVAudioSession.h
的代碼內文檔中查看更多詳細信息。 https://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions?language=objc
不幸的是,我直接從Apple技術支持獲得了這個答案
鑒於當前出貨的系統配置,沒有支持的方法來實現所需的功能。 如果您希望Apple將來考慮添加對此類功能的支持,請通過http://bugreport.apple.com上的Bug Reporter工具提交增強請求。
就是這樣了...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.