Jay*_*ayo 8 ios avaudiosession swift
我正在创建一个视频和音频捕获应用程序.每次我开始录制时,蓝牙音箱中播放的音乐都会在手机的扬声器中播放.当我退出应用程序时,音乐会在蓝牙扬声器上播放.
我第一次尝试解决这个问题就是提供必要的选项audioSession,如下所示:
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: [AVAudioSessionCategoryOptions.MixWithOthers, AVAudioSessionCategoryOptions.AllowBluetooth])
Run Code Online (Sandbox Code Playgroud)
但那没用.所以我的第二个解决方案是将音乐输出重新路由到蓝牙音箱.
我研究了这个,发现了这个功能: audioSession.setOutputDataSource
我真的不知道那里要传递的参数.
而且我不确定在我开始视频录制的那一刻,手机/或我的代码是否会禁用蓝牙连接,或者只是将播放重新路由到手机的扬声器.
更新:我将这条线路连接起来:// try audioSession.setMode(AVAudioSessionModeMoviePlayback)音乐暂停了一下,然后在蓝牙音箱上再次播放.但问题是捕获的视频没有音频.
更新2:如果我向您提供我的代码,这个问题会有解决方案吗?
我将继续尝试回答原来的问题。从 Apple\ns 文档中我会这样:
\n\nfunc setOutputDataSource(_ dataSource: AVAudioSessionDataSourceDescription?)throws\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n参数 数据源
\n\n音频会话\xe2\x80\x99s 输出的数据源。
\n\noutError \n 输入时,指向错误对象的指针。如果发生错误,该指针将设置为描述错误的 NSError 对象。\n 如果不需要错误信息,请传入 nil。这里
\n
此页面应该帮助您弄清楚 AV 会话数据源描述的作用/返回的内容,但总的来说:
\n\n\n\n\n您可以从共享的 AVAudioSession 对象或与其输入和输出端口对应的 AVAudioSessionPortDescription 对象中获取数据源描述。仅某些设备上的内置麦克风端口支持位置、方向和极性模式属性;如果端口不支持这些功能,则其 dataSources 属性的值为 nil。这里
\n
您是否正在尝试将音乐从您的应用程序路由到扬声器(是正在播放的音乐吗?)还是音乐来自另一个应用程序,并且您想要双输出?
\n\n对于错误检查,您可以使用输出数据源之类的东西来确保扬声器仍然可用。如果它返回 null (null.),则意味着您无法在数据源之间切换。
\n\n可能还值得注意的是,用户必须授予您录制权限,但是我怀疑这就是问题,因为您似乎已经在某一时刻进行了录制,就在通过手机而不是扬声器播放时
\n| 归档时间: |
|
| 查看次数: |
758 次 |
| 最近记录: |