蓝牙传输暂停后,Pulseaudio a2dp源消失

时间:2018-09-18 10:49:25

标签: bluetooth pulseaudio a2dp

我是一名开发人员,希望使用module-bluez-device将android设备的音频数据传输到linux服务器。并且我已经做到了,我可以使用webrtc本机lib来捕获a2dp_source的音频数据。

``但是令我困惑的是,当蓝牙传输状态从播放状态变为空闲状态时,a2dp_source将会消失,这导致webrtc的音频设备捕获模块更改为使用其他声音设备,例如我的Linux服务器的麦克风。

而且,如果蓝牙状态从空闲更改为正在播放(在android上播放音乐),则会显示新的a2dp_source,但是webrtc的音频捕获模块不会更改为使用新的a2dp_source,这是我的问题。 当我连接到我的android设备并执行pactl列表源时,a2dp_source状态为SUSPENDED,id为96(源#96)。

然后我在android中播放音乐,a2dp_source状态更改为RUNNING。

在我停止在Android中播放音乐之后,a2dp_source状态将保持大约3秒钟,最后消失。

如果我再次在Android设备中播放音乐,则会显示ID为98且状态为RUNING的新a2dp_source。

在bluez传输状态从播放变为空闲之后,我跟踪了调用堆栈。

PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED(正在闲置)

pa_card_profile_set_available(cp,PA_AVAILABLE_UNKNOWN)[module-bluez5-device.c]

profile_available_hook_callback [module-bluetooth-policy.c] ↓

find_best_profile [module-bluetooth-policy.c]

if (card->active_profile.available == PA_AVAILABLE_UNKNOWN && anyotherProfile.available == PA_AVAILABLE_YES) {
//change to anyotherProfile
}

At here,anyotherProfile = off

set_profile_cb和stop_thread [module-bluez5-device.c]

a2dp_source消失

如果我是对的,您认为我应该采取哪种分辨率最好?

0 个答案:

没有答案