ALSA LADSPA 플러그인을 통해 온보드 사운드 하드웨어를 사용하여 Raspberry Pi/Raspbian wheeze 오디오 플레이어를 설정하여 오디오를 스테레오 다운믹스하고 압축하려고 합니다.
aplay, sox, mpg123, moc( cd ~/.moc && cp /usr/share/doc/moc/examples/config.example.gz ./ && gunzip config.example.gz && mv config.example config
)는 다음 사용자 정의 "장치"를 사용합니다.
pi@raspberrypi ~ $ aplay -D mcl audiofile.wav
pi@raspberrypi ~ $ sox audiofile.wav -t alsa mcl
pi@raspberrypi ~ $ mpg123 -a mcl audiofile.mp3
pi@raspberrypi ~ $ speaker-test -t wav -c 2
pi@raspberrypi ~ $ speaker-test -t wav -c 2 -D mcl
소스에서 현재 mpd 버전을 구축했습니다(http://www.musicpd.org/download/mpd/0.19/mpd-0.19.8.tar.xz) 이 튜토리얼을 따르십시오:
http://www.infofreako.info/2014/04/building-mpd-on-raspberry-pi-with-opus-support/(추가 종속성이 필요함 libboost-dev
및 libicu-dev
)
pi@raspberrypi ~ $ mpc version
mpd version: 0.19.0
pi@raspberrypi ~ $ mpd --version
Music Player Daemon 0.19.8
하지만 여전히 오류가 발생합니다.
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM mcl
Jan 25 10:23 : alsa_output: Failed to open "My ALSA Device" [alsa]: Failed to open ALSA device "mcl": No such file or directory
Jan 25 10:23 : output: Failed to open audio output
Jan 25 10:23 : client: [1] closed
default
장치를 사용할 때 제대로 작동합니다( ladcomp
또한 작동하지 않습니다).
따라서 다른 플레이어가 추측한 ALSA 구성에 오류/누락이 있거나 mpd가 잘못하고 있는 것입니다.
/etc/asound.conf가 없습니다. 여러 소스를 사용하여 다음 ~/.asoundrc를 만들었습니다.
pcm.!default {
type hw
card 0
device 0
}
ctl.!default {
type hw
card 0
device 0
}
###############
# compressor
pcm.ladcomp_limiter {
type ladspa
slave.pcm "plughw:0,0";
# slave.pcm "default";
# slave.pcm "makemono";
path "/usr/lib/ladspa";
plugins [{
label fastLookaheadLimiter
input {
#InputGain(Db) -20 -> +20 ; Limit (db) -20 -> 0 ; Release time (s) 0.01 -> 2
controls [ 20 0 0.8 ]
}
}]
}
pcm.ladcomp_compressor {
type ladspa
slave.pcm "ladcomp_limiter";
path "/usr/lib/ladspa";
plugins [{
label dysonCompress
input {
#peak limit, release time, fast ratio, ratio
controls [0 1 0.5 0.99]
}
}]
}
pcm.ladcomp {
type plug
slave.pcm "ladcomp_compressor";
}
### test mono downmix
#pcm.card0 {
# type hw
# card 0
# device 0
#}
#ctl.card0 {
# type hw
# card 0
# device 0
#}
#pcm.monocard {
# slave.pcm card0
# slave.channels 2
# type plug
#}
#ctl.monocard {
# type hw
# card 0
# device 0
#}
#pcm.!default monocard
####### didnt work, try this
pcm.mcl {
#pcm.makemono {
type route
# slave.pcm "plughw:0,0"
slave.pcm "ladcomp"
ttable {
# Copy both input channels to output channel 0 (Left).
0.0 1.0
1.0 1.0
# copy both input channels to output channel 1 (Right).
0.1 1.0
1.1 1.0
}
}
#pcm.!default monocomplimiter
# EOF
pi@raspberrypi ~ $ grep -v '^$\|^\s*#' /etc/mpd.conf
music_directory "/var/lib/mpd/music"
playlist_directory "/var/lib/mpd/"
db_file "/var/lib/mpd/tag_cache"
log_file "/var/lib/mpd/mpd.log"
pid_file "/var/run/mpd/pid"
state_file "/var/lib/mpd/state"
sticker_file "/var/lib/mpd/sticker.sql"
user "mpd"
bind_to_address "any"
metadata_to_use "artist,album,title,track,name,comment"
input {
plugin "curl"
}
audio_output {
type "alsa"
name "My ALSA Device"
device "mcl"
}
mixer_type "disabled"
filesystem_charset "UTF-8"
id3v1_encoding "UTF-8"
pi@raspberrypi ~ $ uname -r
3.18.3+
더 많은 정보가 필요하면 알려주시기 바랍니다.
편집하다:
pi@raspberrypi ~ $ cat /proc/asound/cards
0 [ALSA ]: bcm2835 - bcm2835 ALSA
bcm2835 ALSA
pi@raspberrypi ~ $ cat /proc/asound/devices
0: [ 0] : control
1: : sequencer
16: [ 0- 0]: digital audio playback
17: [ 0- 1]: digital audio playback
33: : timer
pi@raspberrypi ~ $
ALSA가 여기 구성에서 가상 장치를 생성하도록 할 수 있는 방법이 있습니까? mpd가 이를 찾을 수 있습니까(검색하는 경우)?
편집하다:
pi@raspberrypi ~ $ cat /proc/asound/pcm
00-00: bcm2835 ALSA : bcm2835 ALSA : playback 8
00-01: bcm2835 ALSA : bcm2835 IEC958/HDMI : playback 1
pi@raspberrypi ~ $ ls /proc/asound/dev
ls: cannot access /proc/asound/dev: No such file or directory
pi@raspberrypi ~ $ ls /dev/snd
controlC0 pcmC0D0p pcmC0D1p seq timer
pi@raspberrypi ~ $ ls /proc/sound/
ls: cannot access /proc/sound/: No such file or directory
pi@raspberrypi ~ $ ls /proc/sound
ls: cannot access /proc/sound: No such file or directory
pi@raspberrypi ~ $ amixer
amixer: Mixer attach default error: Invalid argument
pi@raspberrypi ~ $ alsamixer
cannot open mixer: Invalid argument
pi@raspberrypi ~ $
편집하다:
pi@raspberrypi ~ $ alsamixer -c 0
일하다.
답변1
mpd
alsa 출력은 실제로 정의되지 않았기 때문에 장치를 찾지 못합니다! (데몬)은 "일반" 사용자에 대해 알지 못하는 mpd
사용자로 실행됩니다.mpd
pi
/home/pi/.asoundrc
이는 플레이어를 사용자로 실행하여 테스트할 수 있습니다 mpd
.
pi@raspberrypi ~ $ sudo -u mpd speaker-test -t wav -c 2 -D mcl
실제로 alsa 구성 파일이 있다는 것을 다른 곳에서 발견했습니다.
pi@raspberrypi ~ $ sudo nano /usr/share/alsa/alsa.conf
#
# ALSA library configuration file
#
# pre-load the configuration files
@hooks [
{
func load
files [
{
@func concat
strings [
{ @func datadir }
"/alsa.conf.d/"
]
}
"/etc/asound.conf"
"~/.asoundrc"
"/home/pi/.asoundrc" # added !
]
errors false
}
]
...
pi
로컬 구성을 추가했습니다 .
그러면 작동합니다:
pi@raspberrypi ~ $ sudo -u mpd speaker-test -t wav -c 2 -D mcl
speaker-test 1.0.25
Playback device is mcl
Stream parameters are 48000Hz, S16_LE, 2 channels
WAV file(s)
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 256 to 16384
Period size range from 256 to 16384
Using max buffer size 16384
Periods = 4
was set period_size = 4096
was set buffer_size = 16384
0 - Front Left
1 - Front Right
Time per period = 2.944647
0 - Front Left
^C
mpd도 같이 나오네요
pi@raspberrypi ~ mpc play