树莓派python蓝牙_在树莓派3B上做蓝牙音频

article/2025/9/28 23:42:16

无损播放器无线音频方案设计

1. 音频流程简介

暂缺。

2. 关键库和应用简介

2.1 pulseaudio

2.2 bluez

2.3 gstreamer

3. 无线音频方案实施方案

3.1 主要参考材料

3.2 树莓派和R16方案设计

( 工具,具体位置在:tina/staging_dir/toolchain-arm_cortex-a7+neon_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin,请确保这个位置在你的~/.bashrc PATH环境变量中

采用OpenWrt的包进行编译,对Tina进行配置,三个功能模块对应的修改部分分别如下表所示:

三个模块

Make menuconfig

R16中的运行情况

pulseaudio

Sound/pulseaudio-daemon

Sound/pulseaudio-profiles

Sound/Pulseaudio-tools

可以运行

DLNA

Gstreamer

Multimedia/gstreamer

Multimedia/gstreamer-utils

可以运行。(加入gdt-mod-mad插件,可以播放mp3,命令为:gst-launch file location=testmp3.mp3 !mad !alsasink)

Gmrender

Tina中没有,需要从github中下载并交叉编译

Bluez

Make menuconfig中的配置

(1)sound/pulseaudo-deamon

wx20170213-1647172x2.png?w=900

(2)bluez

wx20170213-1648082x.png?w=900

(3)gstreamer(Multimedia/gstreamer)

wx20170213-1720462x.png?w=900

wx20170213-1721402x.png?w=900

ffmpeg(Multimedia/ffmpeg)

wx20170213-1722072x.png?w=900

(Library)

wx20170213-1722302x.png?w=900

Base

wx20170213-1722532x.png?w=900

(5)UPNP

步骤

Raspberry pi 3B+

R16开发板

安装pulseaudio

sudo apt-get update

sudo aptitude -P install pulseaudio pulseaudio-module-zeroconf

1)下载并编译pulseaudio

2)下载并编译安装pulseaudio-module-zeroconf

配置pulseaudio

PI端:

配置pulseaudio支持网络:

1)打开/etc/pulse/default.pa:

#load-module module-native-protocol-tcp

#load-module module-zeroconf-publish

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24 auth-anonymous=1

load-module module-zeroconf-publish

2)打开/etc/rc.local,在exit(0)前加入:

su – pi -c ‘/usr/bin/pulseaudio –start –log-target=syslog –system=false’

Ubuntu PC端(可以是虚拟机,但注意网络部分要配置为bridge模式):

1)配置并使用PC网络播放

sudo apt-get install pulseaudio paprefs

对Network Acess标签第一项打钩

2)配置PC防火墙

sudo ufw allow 4713

sudo ufw allow 5353

3)PC安装并运行avahi服务

sudo apt-get install avahi

Avahi &

4)验证

pactl list sinks short | grep tunnel

PC端运行上面这句话,能看到类似:

tunnel.raspberrypi.local.alsa_output.platform-bcm2835_AUD0.0.analog-stereo

5)使用

sudo apt-get install pavucontrol audacious

用audacious播放音乐,同时打开pavucontrol,能够看到Audacious的播放通道选择,可选择本地或者raspberryPi

类似左边

安装DLNA

1)Pi端安装所需的git/cvs、alsa、automake、gstreamer、upnp、xml库

sudo aptitude -P install git alsa-base alsa-tools alsa-utils \

automake cvs gstreamer0.10-alsa gstreamer0.10-ffmpeg \

gstreamer0.10-fluendo-mp3 gstreamer0.10-plugins-base \

gstreamer0.10-plugins-good gstreamer0.10-pulseaudio \

gstreamer0.10-tools libglib2.0-dev libgstreamer0.10-0 \

libgstreamer0.10-dev libgstreamer-plugins-base0.10-0 libupnp-dev \

libxml2-dev

2)编译安装gmrender

mkdir -p software/gmrender-resurrect && cd software/gmrender-resurrect

cd gmrender-resurrect

./autogen.sh

./configure

sudo  make install

1)gstreamer交叉编译

2)gmrender交叉编译

测试DLNA

Pi端:

运行gmrender

Gmediarender &

此时会启动该服务,并显示如下信息:

Ready for rendering..

手机端:

1)下载并安装BubbleUPnP普通版

2)打开BubbleUPnP软件,选择render源,可以看到有本地和raspberry Pi两个,选择后者就能实现wifi无损音频播放了

安装配置bluez

1)安装bluez

sudo aptitude -P in  stall bluez pulseaudio-module-bluetooth python-gobject python-gobject-2

sudo usermod -a -G lp pi

2)新增/etc/bluetooth/audio.conf:

Enable=Source,Sink,Media,Socket

3)修改/etc/pulse/daemon.conf

resample-method = trivial

4)配对

目前手动配对,后续自动配对

5)设置pulseaudio

1)交叉编译bluez

2)交叉编译pulseaudio-module-bluetooth

3)openWRT配置并编译安装python2.x

4)交叉编译python-gobject

5)交叉编译python-gobject-2

使用蓝牙音箱

sudo reboot

pulseaudio -D

蓝牙连接手机

手机端用qq音乐播放器播放音乐

Pulseaudio移植

JSON-C-0.12和libsndfile-1.0.25源码位置:服务器E:~/bluetoothaudio/dependencies-pulse

对依赖包的交叉编译:参考:http://qq327926614.lofter.com/post/1d2ab5b1_7b2e7ff  此教程里面交叉编译的是pulseaudio 4.0,多了一个Libtool-2.4.2的依赖包

对JSON-C-0.12的编译需要用到libtool,下载并安装libtool-2.4.6,按照上面教程,安装成功

对JSON-C-0.12编译:

配置:./configure –host=arm-linux-gnueabi –prefix=/pulseaudio   无错误

编译:make 后出现一下错误

wx20170213-1723152x.png?w=900

JSON-C-0.11版本的没有问题

配置:./configure --prefix=/pulseaudio --host=arm-linux-gnueabi LDFLAGS=-L/pulseaudio/lib CFLAGS=-I/pulseaudio/include

编译:make

安装:make install

Libsndfile的编译

配置:./configure --host=arm-linux-gnueabi --prefix=/pulseaudio  无错误

编译:make    无错误

安装:make install 需要权限,无错误

Pulseaudio 5.0编译

配置:./configure –prefix=/pulseaudio –host=arm-linux-gnueabi LDFLAGS=-L/pulseaudio/lib CFLAGS=-I/pulseaudio/include LIBJSON_LIBS=-L/pulseaudio/lib LIBJSON_CFLGS=-I/pulseaudio/include LIBSUDFILE_CFLAGS=-I/pulseaudio/include LIBSNDFILE_LIBS=-L/pulseaudio/lib

出现如下错误

wx20170213-1723552x.png?w=900

加入–without-caps

wx20170213-1724332x.png?w=900

./configure –prefix=/pulseaudio –host=arm-linux-gnueabi LDFLAGS=-L/pulseaudio/lib CFLAGS=-I/pulseaudio/include LIBJSON_LIBS=-L/pulseaudio/lib LIBJSON_CFLGS=-I/pulseaudio/include LIBSUDFILE_CFLAGS=-I/pulseaudio/include LIBSNDFILE_LIBS=-L/pulseaudio/lib  PKG_CONFIG=/pulseaudio/lib/pkgconfig –without-caps

wx20170213-1724572x.png?w=900

这个配置是可以的:

./configure –prefix=/pulseaudio –host=arm-linux-gnueabi LDFLAGS=-L/pulseaudio/lib CFLAGS=-I/pulseaudio/include LIBJSON_LIBS=-L/pulseaudio/lib LIBJSON_CFLAGS=-I/pulseaudio/include LIBSNDFILE_CFLAGS=-I/pulseaudio/include LIBSNDFILE_LIBS=-L/pulseaudio/lib PKG_CONFIG=/pulseaudio/lib/pkgconfig –without-caps

Make的时候出错

wx20170213-1725242x.png?w=900

4. 其他问题

赞过:

赞 正在加载……

相关


http://chatgpt.dhexx.cn/article/48aNn32t.shtml

相关文章

cantata测试工具_我如何构建和维护开源音乐播放器Cantata

cantata测试工具 这是与开发和维护开源音乐播放器的开发人员进行的一系列对话的第三部分。 Craig Drummond是Cantata的开发者和维护者, Cantata是一种开源音乐播放器,充当Music Player Daemon(MPD)音乐服务器的前端(客…

sd卡烧写linux内核,linux下怎样烧写sd卡

广告 提供包含云服务器,云在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。 就像用硬盘装windows平台一样,将sd启动卡插入板子的sd卡插槽,然后将启动顺序拨码开关拨到sd卡启动处,开机启动即可手动把sd卡中加装好的平台烧写到板子上...如下…

linux下实现dlna识别当前音频格式,如何将实时音频流设置为DLNA兼容设备?

问题描述 有没有办法将声卡的实时输出从我们的12.04.1 LTS amd64桌面流式传输到我们网络中的DLNA-compliant外部设备?使用Rygel,miniDLNA和uShare选择共享目录中的媒体内容总是很好 – 但到目前为止,我们完全无法通过DLNA向客户端获取实时音频…

IOS版aplayer使用教程_享声数播APP使用指南【ios版】

享声数播的内容播放是支持APP操作的,现在我们简单介绍一下相关的操作指南。 关于享声APP,官方推荐安卓手机用户使用bubbleupnp ,苹果ios用户使用8player 举例设备:享声A1 软件:8player 操作顺序 【数播端操作】 ①享声数播用网线连接到路由器 ②在享声主屏幕上切换到【通用…

打开方式中选择默认方式无反映_「全民标签」论享声A1的APP打开方式以及与树莓派的使用对比...

​ 大家好,我是流氓才子。 说在前面:今天的推送,末尾没有福利,因为个人觉得文章的主角就是最大的福利。。。先别急着说这句广告很硬,往下翻翻试试? 近一个月来论坛最火的机器是啥?没猜错的话应该…

Android上好用的DLNA播放器BubbleUPnP

BubbleUPnP的厉害之处在于:实现在手机上听电脑上的歌,或者控制电脑上的播放器当遥控器用。用foobar2000只需要添加一个叫foo_upnp的插件即可,XMBC或者别的支持UPNP的播放器也可以。 BubbleUPnP播放器能够轻松播放手机中的音视频及网络上的UPn…

BubbleUPnP多屏互动

一,相关简介 1、 DLAN简介(百度百科) DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE,其宗旨是Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance)由索尼、英特尔、微软等…

WebDAV之葫芦儿·派盘+BubbleUPnP

BubbleUPnP 支持WebDAV方式连接葫芦儿派盘。 推荐一款投屏神器,它将手机内容分享到电视大屏上与家人好友一起共享,软件还提供了丰富的音乐及影视资源,喜欢的内容在线搜索就能播放。支持连接葫芦儿派盘WebDAV服务站,可以直接播放派盘内的影视资源。 BubbleUPnP是一款支持U…

数据结构和算法——Huffman树和Huffman编码

Huffman树是一种特殊结构的二叉树,由Huffman树设计的二进制前缀编码,也称为Huffman编码在通信领域有着广泛的应用。在word2vec模型中,在构建层次Softmax的过程中,也使用到了Huffman树的知识。 在通信中,需要将传输的文…

Huffman编码压缩文件

文章目录 前言一、Huffman编码是什么?二、Huffman编码的实现方法三、Huffman压缩文件1.统计文件个字符出现的次数2.生成Huffman树3.生成码表4.对文件进行压缩 四、Huffman解压文件五、实验结果总结 前言 这个实验是我在学习信息论与编码时所做的课程实验&#xff0…

自适应Huffman编码

自适应Huffman编码,可用初始编码表(数字音视频技术,实验二) 如果你已经理解了 自适应Huffman编码 ,那么你不应该浪费时间在无聊的实验上 实验目的 1、深入掌握自适应Huffman编码的原理 2、掌握自适应Huffman编码算法…

huffman python,哈夫曼(Huffman)编码python代码实现

首先看定义 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称…

Huffman Tree

Huffman Tree 哈夫曼树;哈夫曼编码;最优二叉树 自底向上 变长编码;前缀编码;熵编码 数据无损压缩;最短编码;最佳判定树 一、基本概念 Huffman Tree,又称最优二叉树,是带权路径长度最…

Huffman Codes

题目 In 1953, David A. Huffman published his paper “A Method for the Construction of Minimum-Redundancy Codes”,and hence printed his name in the history of computer science. As a professor who gives the final exam problem on Huffman codes, I am encounte…

HuffmanTree

#include "stdafx.h" #include "stdio.h" #include "stdlib.h" #include "string.h"typedef int ELEMTYPE;//哈弗曼树节点结构体 typedef struct HuffmanTree {ELEMTYPE weight;ELEMTYPE id;//区分权值相同的节点struct HuffmanTree* …

JPEG中Huffman解码实例讲解

DHT Huffuman表格式 -------------------------------------------------------------------------- 名称 字节数 值 说明 -------------------------------------------------------------------------- 段标识 1 FF 段类型 1 C4 段…

哈夫曼树(huffman)

学完了huffman树,讲一下自己对它的理解 huffman树遵循二叉树的原则,每个节点最多有两个子节点,但是每个节点都带有一个权重,如果我们要将一组字符串 “ B D C A F E ” 插入huffman树,每个字符都会带有一个权重&#…

Huffman树和Huffman编码

文章目录 Huffman树的定义带权路径长度WPL Huffman树的构造Huffman树的特点 Huffman编码构造Huffman编码 Huffman树的定义 哈夫曼(Huffman)树,又称最优二叉树,是一类带权路径长度WPL最短的树。 带权路径长度WPL 要理解带权路径…

Huffman树(哈夫曼树)

哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的带权路径长度记为…

虚拟机下安装BackTrack5 (BT5)教程及BT5汉化

isare邀请您访问Backtrack中文网 http://www.backtrack.org.cn/?fromuid50397 isare邀请您访问Backtrack中文网 http://www.backtrack.org.cn/?fromuserisare PS:back track 安装过程中有2点要注意:第一:复制到99%的时候会等大约10来分钟&a…