高级音频分发配置文件
A2DP 定义了如何通过蓝牙连接将多媒体音频从一个设备流式传输到另一个设备。这个机制也称为蓝牙音频流媒体。
要执行 A2DP 源或接收器功能,您必须首先完成以下步骤。
安装设备以支持 A2DP 功能
先决条件
- 启用 SSH 以访问您的主机设备。有关说明,请参见使用 SSH 登录。
- 将 DUT(设备在测试中)与远程设备配对。有关说明,请参见与远程蓝牙设备配对。
- 将 DUT 和远程设备放置在蓝牙范围内。
操作步骤
-
在命令提示符下运行 SSH,使用以下命令:
ssh root@<device_IP_address>
示例
如果设备的 IP 地址为 10.92.160.222,请运行以下命令:
ssh root@10.92.160.222
-
通过输入以下密码连接到 SSH:
oelinux123
-
通过运行以下命令打开蓝牙测试应用程序:
bluetoothctl
示例输出
sh-5.1# bluetoothctl Agent registered uetoothd... [CHG] Controller 22:22:F1:C1:99:C0 Pairable: yes
-
根据需要进入传输子菜单或播放器子菜单。
-
要进入传输子菜单,请在 bluetoothctl 中运行以下命令:
menu transport
示例输出
[bluetooth]# menu transport Menu transport: Available commands: ------------------- list List available transports show <transport> Transport information acquire <transport> Acquire Transport release <transport> Release Transport send <transport> <filename> Send contents of a file receive <transport> [filename] Get/Set file to receive volume <transport> [value] Get/Set transport volume back Return to main menu version Display version quit Quit program exit Quit program help Display help about this program export Print environment variables
要执行源中的传输子菜单功能,请参见执行蓝牙 A2DP 源功能。
要执行接收器中的传输子菜单功能,请参见执行蓝牙 A2DP 接收器功能。 -
要进入播放器子菜单,请在 bluetoothctl 中运行以下命令:
menu player
示例输出
[bluetooth]# menu player Menu player: Available commands: ------------------- list List available players show [player] Player information select <player> Select default player play [item] Start playback pause Pause playback stop Stop playback next Jump to next item previous Jump to previous item fast-forward Fast forward playback rewind Rewind playback equalizer <on/off> Enable/Disable equalizer repeat <singletrack/alltrack/group/off> Set repeat mode shuffle <alltracks/group/off> Set shuffle mode scan <alltracks/group/off> Set scan mode change-folder <item> Change current folder list-items [start] [end] List items of current folder search <string> Search items containing string queue <item> Add item to playlist queue show-item <item> Show item information back Return to main menu version Display version quit Quit program exit Quit program help Display help about this program export Print environment variables
要执行接收器中的播放器子菜单功能,请参见执行蓝牙 A2DP 接收器功能。
-
执行蓝牙 A2DP source功能
您可以使用 bluetoothctl 菜单、传输子菜单和 paplay 命令执行蓝牙 A2DP source功能。
在开始之前,请按照“设置设备以支持 A2DP 功能”中的说明设置您的设备并进入所需的菜单。
连接远程设备
要在 A2DP 源角色中连接远程设备,请在 bluetoothctl 菜单中运行以下命令:
connect <bt_address>
参数
<bt_address> 是远程设备的蓝牙地址。
示例
要连接到已配对的远程设备,蓝牙地址为 17:1A:35:8D:A2:A4,请运行以下命令:
connect 17:1A:35:8D:A2:A4
示例输出
[bluetooth]# connect 17:1A:35:8D:A2:A4
Attempting to connect to 17:1A:35:8D:A2:A4
[CHG] Device 17:1A:35:8D:A2:A4 Connected: yes
[CHG] Device 17:1A:35:8D:A2:A4 UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 17:1A:35:8D:A2:A4 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device 17:1A:35:8D:A2:A4 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device 17:1A:35:8D:A2:A4 ServicesResolved: yes
[CHG] Device 17:1A:35:8D:A2:A4 Bonded: yes
[CHG] Device 17:1A:35:8D:A2:A4 Paired: yes
[NEW] Endpoint /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1
[NEW] Endpoint /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep2
[NEW] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
Connection successful
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 State: active
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 Volume: 0x0040 (64)
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 State: idle
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 Volume: 0x0044 (68)
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 Volume: 0x0040 (64)
[MySoundbar]#
列出可用传输
要列出可用的传输,请在传输子菜单中运行以下命令:
list
示例输出
[MySoundbar]# list
Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
获取编解码器能力信息
要获取传输的编解码器能力信息,请在传输子菜单中运行以下命令:
show <transport>
参数
是传输路径。
示例
要获取路径为 /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 的传输的编解码器能力信息,请运行以下命令:
show /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
示例输出
[MySoundbar]# show /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0
UUID: 0000110a-0000-1000-8000-00805f9b34fb
Codec: 0x00 (0)
Configuration: 0x21 (33)
Configuration: 0x15 (21)
Configuration: 0x02 (2)
Configuration: 0x35 (53)
Device: /org/bluez/hci0/dev_17_1A_35_8D_A2_A4
State: idle
Volume: 0x0040 (64)
设置绝对音量
注意 确保 DUT 和远程设备支持 setabsvolume 功能。
要设置传输的绝对音量,请在传输子菜单中运行以下命令:
volume <transport> [value]
参数
- 是传输路径。
- [value] 是音量级别。
示例
要将路径为 /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 的绝对音量设置为 50,请运行以下命令:
volume /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 50
示例输出
[MySoundbar]# volume /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 50
Changing Volume succeeded
[CHG] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 Volume: 0x0032 (50)
[MySoundbar]# volume /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd0 10
Changing Volume succeeded
播放音频文件
注意
- DUT 不支持音频播放器。请使用 paplay 命令播放音乐。
- 仅支持 PCM 音频样本。
要从 DUT 播放歌曲,请执行以下操作:
- 运行 SSH。
- 通过运行以下命令播放 WAV 文件:
paplay <audio_filepath> -v
参数
<audio_filepath> 是 WAV 文件的路径。示例
要播放路径为 /tmp/pcmtest.wav 的 WAV 文件,请运行以下命令:paplay /tmp/pcmtest.wav -v
示例输出
sh-5.1# paplay /tmp/pcmtest.wav -v Opening a playback stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'. Connection established. Strean successfully created. Buffer metrics: maxlength=4194304, tlength=352800, prebuf=349276, minreq=3528 Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'. Connected to device bluez_sink.20_19_D8_36_90_40.a2dp_sink (index: 4, suspended: no). Stream started. Time: 4.427 sec; Latency: 2042656 usec.
获取接收器列表
要在多个设备连接时获取接收器列表,请在 SSH 中运行以下命令:
pactl list sinks short
示例输出
sh-5.1# pactl list sinks short
0 low-latency0 module-pal-card.c s16le 2ch 48000Hz SUSPENDED
1 deep-buffer0 module-pal-card.c s16le 2ch 48000Hz SUSPENDED
2 offload0 module-pal-card.c s16le 2ch 48000Hz SUSPENDED
3 voip-rx0 module-pal-card.c s16le 2ch 48000Hz SUSPENDED
4 bluez_sink.20_19_D8_36_90_40.a2dp_sink module-bluez5-device.c s16le 2ch 44100Hz SUSPENDED
在特定接收器上播放音频
要在连接多个设备时在特定接收器上播放音频,请在 SSH 中运行以下命令:
paplay <audio_filepath> --device=<device_name> -v
参数
- <audio_filepath> 是 WAV 文件的路径。
- <device_name> 是接收器名称。
示例
要在接收器 bluez_sink.20_19_D8_36_90_40.a2dp_sink 上播放 pcmtest.wav,请运行以下命令:
paplay pcmtest.wav --device=bluez_sink.20_19_D8_36_90_40.a2dp_sink -v
示例输出
sh-5.1# paplay pcmtest.wav --device=bluez_sink.20_19_D8_36_90_40.a2dp_sink -v
Opening a playback stream with sample specification 's16le 2ch 44100Hz' and channel map 'front-left,front-right'.
Connection established.
Stream successfully created.
Buffer metrics: maxlength=4194304, tlength=352800, prebuf=349276, minreq=3528
Using sample spec 's16le 2ch 44100Hz', channel map 'front-left,front-right'.
Connected to device bluez_sink.20_19_D8_36_90_40.a2dp_sink (index: 4, suspended: no).
Stream started.
Time: 2.925 sec; Latency: 2062081 usec.
断开远程设备
要断开远程设备,请在 bluetoothctl 菜单中运行以下命令:
disconnect <bt_address>
参数
<bt_address> 是远程设备的蓝牙地址。
示例
要断开已配对的远程设备,蓝牙地址为 17:1A:35:8D:A2:A4,请运行以下命令:
disconnect 17:1A:35:8D:A2:A4
示例输出
[MySoundbar]# disconnect 17:1A:35:8D:A2:A4
Attempting to disconnect from 17:1A:35:8D:A2:A4
[DEL] Transport /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1/fd2
[DEL] Endpoint /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep1
[DEL] Endpoint /org/bluez/hci0/dev_17_1A_35_8D_A2_A4/sep2
[CHG] Device 17:1A:35:8D:A2:A4 ServicesResolved: no
Successful disconnected
[CHG] Device 17:1A:35:8D:A2:A4 Connected: no