没有脉冲音频的 A2DP 接收器

Posted

技术标签:

【中文标题】没有脉冲音频的 A2DP 接收器【英文标题】:A2DP sink without pulseaudio 【发布时间】:2012-09-02 13:09:35 【问题描述】:

所以我试图让我的 linux 服务器播放使用蓝牙从我的 android 手机发送的音乐(linux 机器是 A2DP 接收器,手机是源)。 到目前为止,我所做的是:

安装 bluez 并启用 audiosource/audiosink 配对手机和服务器 从手机连接到服务器(手机说它正在通过蓝牙传输音频)

但我什么也听不见。此外,互联网上的大多数指南都假设使用 Pulseaudio,我更喜欢使用 ALSA。

我目前在 /etc/asound.conf 中有以下内容:

pcm.!default
    type bluetooth
    profile "auto"

我正在运行 Bluez v4.99 和 Alsa v1.0.25。 有什么想法吗?

【问题讨论】:

你有没有想过这个问题?我也有同样的问题... 【参考方案1】:

我知道这是一篇旧帖子,但希望答案对目前从事此工作的人有用。

您可以使用 /etc/bluetooth/audio.conf,这是系统范围的文件,或 ~/.asoundrc,这是您的本地文件。两者都由 BlueZ/ALSA 读取。但是,我认为您需要在配置文件 z.B. 中包含 MAC 地址:

pcm.btheadset 
    type bluetooth
    device "XX:XX:XX:XX:XX:XX" #MAC address
    profile "auto"

我为此找到的最佳资源是:

1) James B 的博文:Bluez must be one of the best kept secrets in Linux他解释了 BlueZ 和 ALSA 之间的结构和接口,这是我在互联网上其他任何地方都找不到的。

2) 他的第二个帖子,代码:Bluez A2DP AudioSink for ALSA

3) ALSA 网站,介绍了 pcm 插件的结构,但并没有很好地解释它们。

4) 一些 ALSA 插件教程:The ALSA wiki

一些有用的命令:

$sudo service bluetooth restart
$sudo alsa force-reload

在更改 asoundrc 或 audio.conf 文件后运行这些文件。

【讨论】:

【参考方案2】:

在这里您可以找到使用 ALSA 或 Pulseaudio 配置蓝牙的手册

-在 Linux Mint 17.3 Mate,64 位/Ubuntu 14.04 Mate,64 位上测试-

如何在没有 PA 的情况下使 ALSA 和蓝牙协同工作

这部分适用于没有 Pulseaudio 的纯 ALSA 系统,例如 KXStudio、QStudio64、Tango studio..!

确保已卸载 Pulseaudio 并且您的声卡 在 ALSA 中正确配置!

删除脉冲音频cookies和文件 /home/USERNAME/.config/pulse

    修改您的 bluetooth-audio.conf: 类型:

gksudo puma /etc/bluetooth/audio.conf

设置

# This section contains options which are not specific to any
# particular interface

[一般] 启用=套接字

保存文件。

    设置 ~/.asoundrc 文件 类型:

sudo hcitool 扫描

扫描... XX:XX:XX:XX:XX:XX 立体声耳机

在您的主文件夹中创建一个名为 .asoundrc 的隐藏文件!然后写入:

    pcm.!default 
        type plug
        slave.pcm 
             type bluetooth
             device "XX:XX:XX:XX:XX:XX"
             profile "auto"

        

将“XX:XX..”替换为您设备的地址。

保存文件!

在更改 asoundrc 或 audio.conf 文件后运行这些:

sudo service bluetooth restart
sudo alsa force-reload

或重新启动您的计算机! —————————————————————————————————————————————

在您的任务栏上转到您的 blueman-applet,搜索并设置您的新设备! 注意:某些蓝牙设备默认需要密码(例如 0000)

而其他一些则采用随机配对。 让您找到并配对的设备保持“信任”!

通过A2DP将您的设备作为音频连接!

————————————————————————————————————

如果您的设备与您的系统连接,您可以在将播放器中的输出设置为“默认”!

———————————————————————————————————————

将主文件夹中的 .ASOUNDRC 重命名为“.ASOUNDRC_OFF” 无需蓝牙即可恢复旧系统设置!

类型:mv /home/USERNAME/.asoundrc /home/USERNAME/.asoundrcOFF ->禁用蓝牙特定的asoundrc

输入:mv /home/USERNAME/.asoundrcOFF /home/USERNAME/.asoundrc -> 启用它!

替代方案

在您的主文件夹中使用 .asoundrc 制作两个“脚本”来激活/停用蓝牙:

创建一个空文件并写入/粘贴:

#!/bin/bash
mv /home/USERNAME/.asoundrc /home/USERNAME/.asoundrcOFF
or:
#!/bin/bash
cd /home/USERNAME/
mv .asoundrc .asoundrcOFF

要再次为蓝牙激活 .asoundrc,请使用以下条目创建另一个文件:

#!/bin/bash
mv /home/USERNAME/.asoundrcOFF /home/USERNAME/.asoundrc

或:

#!/bin/bash
cd /home/USERNAME/
mv .asoundrcOFF .asoundrc

使文件可执行并使用“用终端打开”运行它们! 现在您有两个“按钮”来打开或关闭蓝牙声音。

给他们单独的图标: ;-)

———————————————————————————————————————-

玩家

————

推荐使用totem、Qmmp或者Banshee-player——因为没有什么比 玩和听!图腾播放器也显示视频。

VLC 播放器需要“默认”声卡驱动才能正常工作!

签入:/home/USERNAME/.config/vlc/vlcrc

那个 alsa-audio-device 在 >>line1666

# ALSA Device Name (string)
alsa-audio-device=default

使用以下命令通过终端使用播放器: 要播放音乐,请输入:

MPlayer

———––

mplayer /home/USERNAME/Musik/1.mp3

如果您没有听到声音或出现错误,请尝试:

mplayer -ao alsa:device=default /home/USERNAME/Musik/1.mp3

VLC 播放器

————-

cvlc /home/USERNAME/Musik/1.mp3
vlc /home/USERNAME/Musik/1.mp3
rvlc /home/USERNAME/Musik/1.mp3
To add whole directories type:
rvlc add /home/USERNAME/Musik/

键入:开始/停止/下一步...进行导航!

或使用 vlc-gui。

———————————————————————————————————————-

要将 mplayer 与图形界面一起使用,您必须安装 gui 包: 类型:

sudo apt-get install mplayer-gui

通过 Ctrl-Alt-T 打开终端并使用以下命令。使用这些行并一一键入/复制以避免混淆(!):

cd /usr/share/mplayer/skins/default

for FILE in *.png; do sudo convert “$FILE” -define png:format=png24 “$FILE”; done

cd /usr/share/mplayer/skins; sudo rm default; sudo ln -s Blue default

—————————————————————————————————————

现在您可以正常启动 mplayer-gui!

如果你更喜欢终端类型:

gmplayer /home/USERNAME/Musik/1.mp3

gmplayer -ao alsa:device=default /home/USERNAME/Musik/1.mp3
if you have problems!

没有 gui 的终端命令:

mplayer /DIRECTION/TO/FILE

可用的输出模块和驱动程序:

mplayer -vo help

————————————————————————-

带有 PULSEAUDIO 的蓝牙

—————————————————--------

对于带有 pulseaudio 的 Linux 系统:

(1.) 编辑 /etc/bluetooth/audio.conf 并取消注释以下行:

AutoConnect=true

    运行以下命令为 blueman 和相关模块安装最新的软件包:

    sudo add-apt-repository ppa:blueman/ppa

    sudo apt-get 更新

    sudo apt-get upgrade blueman 在此输入代码

(3.) 检查 /etc/pulse/default.pa 中是否添加了以下行:

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif

如果没有,请添加行。

重启!

    运行新的 blueman-applet

右键单击面板小程序并打开蓝牙。 你的蓝牙设备的旧配置仍然存在,删除它。 右键单击 blueman-panel 小程序并选择设置新设备。 完成您设备的向导。(如果您在“配对”时遇到问题,请重新启动系统并跳过此步骤!)

现在您获得了连接的蓝牙设备!

要通过它发送/收听音频,只需执行以下 2 个步骤:

在任务栏中右键单击打开 Mate-volume control-settings(或 pavucontrol), 浏览到“硬件”- 并使用下拉菜单“关闭”所有其他声卡的内置音频配置文件

让蓝牙设备激活!

使用其他下拉菜单将蓝牙设备设置为使用A2DP

现在启动totem-player或vlc(带有pulseaudio-output)发送音频到蓝牙!

享受你的声音! ;-)

WLAN 问题

—————— 如果您在连接到蓝牙设备后看到 WiFi 连接断开,请运行以下命令 命令:

$ echo “options iwlwifi 11n_disable=1 bt_coex_active=0 power_save=0 auto_agg=0 swcrypto=1” |
sudo tee -a /etc/modprobe.d/iwlwifi.conf > /dev/null

由 chalee 在 2017 年为 LM 17.3 (Rosa) MATE 和 Ubuntu 14.04 测试:

http://mayastudio.tumblr.com/bluetooth

【讨论】:

该手册已被编辑,因为 .asoundrc 中缺少一个条目,该条目使 firefox 也可以使用蓝牙! ;-) 这不是 A2DP SINK。【参考方案3】:

我的猜测是您的音频路径没有将蓝牙路由到您的扬声器。我看到了类似的问题,通过手动执行步骤 5“将 PulseAudio 蓝牙源连接到 PulseAudio ALSA 接收器”修复了这个问题:http://jprvita.wordpress.com/2009/12/15/1-2-3-4-a2dp-stream/

【讨论】:

是的,我同意。但我不打算使用 Pulseaudio。那么问题来了,我怎样才能使用 ALSA 来实现呢?【参考方案4】:

我只是尝试做同样的事情,我使用的是 Fedora 19,所以你的里程数因人而异。这些是我采取的步骤。

    使计算机可被发现 将手机与电脑配对(旁边有耳机标志) 在我的 HTC 手机上,我在配对时单击了“连接” 进入 gnome3 的声音设置 转到输入选项卡 为您的手机选择蓝牙项 也许可以调节音量...

【讨论】:

以上是关于没有脉冲音频的 A2DP 接收器的主要内容,如果未能解决你的问题,请参考以下文章

安卓设备之间的蓝牙音频流

在 Android 中通过蓝牙接收音频

在外部蓝牙设备和 Android 手机之间传输音频

AVAudioSession 不会自动连接蓝牙 A2DP 音频?

SBC音频编解码算法在无线音频传输上的简单应用

如何在 Android 中启用 A2DP 接收器功能?