linux alsa aplay 怎么修改才能播放6.1ch音频

linux alsa aplay 怎么修改才能播放6.1ch音频,第1张

错误信息:ALSA lib pcm.c :2212:(snd_pcm_open_noupdate) Unkown PCM aplayhooks aplay:main:660:audio open error :File exites

ps进程没其aplay运行底原

近看ALSA driver尝试android 编译alsa-utils工具面讲述我何进行编译及程遇问题何解决:

首先我ALSA 官网载alsa-utils-1.0.23版本工具我android alsa-lib 1.023版本防止版本现问题我选择版本我alsa-lib放路径android_source/external/alsa-lib目录面我载alsa-utils-1.023工具包载放面

接我需要完几作:

1、alsa-utils面创建Android.mk

写内容:

ifeq ($(strip $(BOARD_USES_ALSA_AUDIO)),true)

LOCAL_PATH:= $(call my-dir)

#

# Build aplay command

#

include $(CLEAR_VARS)

LOCAL_CFLAGS := \

-fPIC -D_POSIX_SOURCE \

-DALSA_CONFIG_DIR=\"/system/usr/share/alsa\" \

-DALSA_PLUGIN_DIR=\"/system/usr/lib/alsa-lib\" \

-DALSA_DEVICE_DIRECTORY=\"/dev/snd/\"

LOCAL_C_INCLUDES:= \

$(LOCAL_PATH)/include \

$(LOCAL_PATH)/android \

external/alsa-lib/include

LOCAL_SRC_FILES := \

aplay/aplay.c

LOCAL_MODULE_TAGS := debug

LOCAL_MODULE := alsa_aplay

LOCAL_SHARED_LIBRARIES := \

libasound \

libc

include $(BUILD_EXECUTABLE)

3、进入第2步创建sys目录sys目录创建signal.h文件文件写内容

[plain] view plaincopyprint?

01.#include <signal.h>

#include <signal.h>4、接直接编译android 编译程能现 错误

4.1:kernel/common/linux/un.h:18: error: expected specifier-qualifier-list before 'sa_family_t

我alsa-utils/alsactl/init_parse.c面include un.h前没#include <sys/socket.h>要前include文件解决

4.2:能遇错误:aplay.c面提示报错'S_IRGRP' undeclared (first use in this function要aplay.c面添加文件:#include <sys/stat.h>,解决

4.3:接能语言错误:speaker-test.c面报wav_file_dir没定义值用定义wav文件存放pad位置随便放哪我定义路径 /sdcard目录面

经面种种修改alsa-utils工具终于编译功

我编译程遇问题

转载

第一次写还有点不习惯,慢慢来吧...

很久以前在淘宝买了一块raspberry pi moduleB+(小派),买回来之后与我的JBL Pebbles音箱(蜗牛)配合起来听音乐是相当的巴适,小音箱自带USB声卡,弥补了小派 bcm音质不足的bug,里面跑过Rune等音乐服务,虽然挺不错的,但是小小的音乐服务霸占树莓派的资源,可是我希望让它一边承担自动音乐播放器一边跑跑自己做的http服务。于是开始diy,sd卡烧写rasbian上电开机,mpb没有网线孔,没法直连小派,思来想去,翻出我的老将thinkpad T430,网线直连通过设置桥接,让小派接入了路由器,(还不是因为是租房,路由器不能直连T_T),接下来终端arp -a扫描所有内网设备,找出小派,尝试ssh,多次尝试失败,直接被拒绝登录...谷歌一番发现新的rasbian为了安全原因默认关闭ssh服务....取下sd,根目录创建一个空的SSH文件,官方文件http://downloads.raspberrypi.org/raspbian/release_notes.txt(神坑...)

ok,接下来先配置rasbian的usb声卡作为默认声卡,编辑/etc/modprobe.d/alsa-base.conf

#options snd-usb-audio index=0

#options snd_bcm2835 index=1

通过翻阅Rune源码发现其内部使用的音乐服务是一个叫MPD的音乐服务程序,是linux下一个基于c/s结构的音乐程序,mpc是一个客户端实现程序,一起安装吧 sudo apt-get install mpd mpc 

在pi目录下创建music文件夹存储音乐文件,mpd文件夹来存储mpd云信的配置、缓存文件等等。复制配置文件 cp /etc/mpd.conf  ~/mpd/,修改此文件相关配置,终于mpd跑起来了...

copy一个音乐文件到小派上,scp  ‘Serebro - Mi Mi Mi.mp3’ pi@192.168.1.123:~/music

添加到音乐列表 mpc -p 18080 add music/*

开始播放骚浪的音乐~ mpc -p 18080 play 

欧耶~蜗牛开始嚎叫啦~

后记:

1.mpc 控制音量还有点问题,直接无效。试过amixer改变音量依旧无效,只有alsamixer才有效,不知为何,有空继续研究下

2.到时候把shairport弄上去,手机和电脑也可以直接播放音乐了

3.每次播放音乐需要登录小派终端,看抽空在写一个客户端app简单控制下,那就不错啦

五、由于我板子声音架构为alsa,直接使用madplay播放会出现audio: /dev/dsp: No such file or directory错误。

原因是madplay使用oss建构,在网上查找了一些资料,可以用alsa支持oss架构,但是并没有找到比较容易的方法,有待以后学习。

简单解决方法如下:使用madplay解码再使用aplay播放:)在这里向有此伟大想法的不知名网友致敬。

madplay -o wav:- 1.mp3 | aplay

有关aplay等alsa工具移植请参照http://blog.csdn.net/yichi7758/archive/2010/02/26/5328491.aspx

参照博客:http://blog.csdn.net/yichi7758/article/details/5329313


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12024628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存