Mopidy: mopidy๊ฐ€ ์žฌ์ƒ ์ค‘์ผ ๋•Œ ๋‹ค๋ฅธ ์†Œ๋ฆฌ๊ฐ€ ๋“ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 02์›” 03์ผ  ยท  9์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mopidy/mopidy

์ด๊ฒƒ์ด ๋ชจํ”ผ ๋ฌธ์ œ์ธ์ง€ ์•„๋‹Œ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
์˜ค๋Š˜ mopidy๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์Œ์•…์„ ์žฌ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋œ YouTube ๋™์˜์ƒ์„ ๋ณด๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. mopidy๋ฅผ ์ฃฝ์˜€์„ ๋•Œ ๊ฐ‘์ž๊ธฐ ๋‹ค์‹œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” ์•„์น˜๋ฆฌ๋ˆ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ œ๊ณต๋œ .service ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  systemd๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ์‹œ์ž‘ํ•  ๋•Œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ ์–ด๋„ ํ•œ ๋ช…์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์—ฌ๊ธฐ์— ์ด ๋ฌธ์ œ๋ฅผ ๋ฌธ์„œํ™”ํ–ˆ๊ฑฐ๋‚˜ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ 
์ด๊ฒƒ์€ archlinux(systemd) ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด mopidy ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Pulseaudio๋Š” ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ pulseaudio ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์‚ฌ์šด๋“œ๋ฅผ ์žฌ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. pulseaudio๊ฐ€ ๋ถ€ํŒ… ์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šด๋“œ ์žฌ์ƒ์„ ์‹œ๋„ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ mopidy๋กœ ๋จผ์ € ํ”Œ๋ ˆ์ดํ•˜๋ฉด pulseaudio๊ฐ€ mopidy ์‚ฌ์šฉ์ž๋กœ ์‹œ์ž‘๋˜๊ณ  ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ ์‚ฌ์šด๋“œ๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šด๋“œ๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks#Local_.28with_separate_mpd_user.29

mpd์šฉ์ด๋ฏ€๋กœ mpd.conf์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ๋ฌด์‹œํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค. pulseaudio์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์˜ฌ๋ฐ”๋ฅธ pulseaudio ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด mopidy๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด mopidy ๊ตฌ์„ฑ์— ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.

[audio]
output = pulsesink server=127.0.0.1

๋ชจ๋“  9 ๋Œ“๊ธ€

ํŽ„์Šค์˜ค๋””์˜ค๋ฅผ ์‚ฌ์šฉ ์ค‘์ด์‹ ๊ฐ€์š”?

๋„ค

Pulseaudio๋Š” ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ pulseaudio ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์‚ฌ์šด๋“œ๋ฅผ ์žฌ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. pulseaudio๊ฐ€ ๋ถ€ํŒ… ์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šด๋“œ ์žฌ์ƒ์„ ์‹œ๋„ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ mopidy๋กœ ๋จผ์ € ํ”Œ๋ ˆ์ดํ•˜๋ฉด pulseaudio๊ฐ€ mopidy ์‚ฌ์šฉ์ž๋กœ ์‹œ์ž‘๋˜๊ณ  ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ ์‚ฌ์šด๋“œ๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šด๋“œ๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks#Local_.28with_separate_mpd_user.29

mpd์šฉ์ด๋ฏ€๋กœ mpd.conf์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ๋ฌด์‹œํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค. pulseaudio์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์˜ฌ๋ฐ”๋ฅธ pulseaudio ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด mopidy๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด mopidy ๊ตฌ์„ฑ์— ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.

[audio]
output = pulsesink server=127.0.0.1

์‹œ๊ฐ„์ด ๋˜๋Š” ๋Œ€๋กœ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜๋„ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. systemd(๋‚ด ์‚ฌ์šฉ์ž๋กœ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ mopidy๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๋ช…๋ น์ค„์—์„œ ์ง์ ‘ ์‹œ์ž‘ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฐ™์€ ์‚ฌ์šฉ์ž๊ฐ€ pulseaudio์— ์•ก์„ธ์Šคํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ์–ด๋”˜๊ฐ€์— ๋ฌธ์„œํ™”๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ...

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์— ๋กœ์ปฌ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์Šคํ…œ ์„œ๋น„์Šค ํŒŒ์ผ์ด
์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ‹์ง€๋„ค์š”. ๋‹ซ๊ณ  ๋ˆ„๊ตฐ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฌธ์„œ์— ๋ญ”๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋‹ค์‹œ ์—ด์–ด์ฃผ์„ธ์š”.

๋‚˜ ์ž์‹ ์—๊ฒŒ๋„ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๊ทธ ๋ฐ˜๋Œ€์˜€์Šต๋‹ˆ๋‹ค. ๋ชจํ”ผ๋””๋Š” ์•„๋ฌด๋ฆฌ ์†Œ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•ด๋„ ์žฌ์ƒ์ด ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์„ ๋” ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋‚ด ๋กœ๊ทธ์—์„œ ๋ฐœ๊ฒฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ผ๋ฐ˜ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ERROR    GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure. Debug message: gstplaysink.c(2758): gen_audio_chain (): /GstPlayBin2:playbin20/GstPlaySink:playsink

-vvv to mopedy ๋ฐ gstreamer ๋””๋ฒ„๊น…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

WARN                    alsa pcm_hw.c:1557:snd_pcm_hw_open: alsalib error: open '/dev/snd/pcmC1D0p' failed (-2): No such file or directory
WARN                    alsa pcm_dmix.c:1022:snd_pcm_dmix_open: alsalib error: unable to open slave
WARN                    alsa gstalsasink.c:765:gst_alsasink_open:<alsasink0> error: Could not open audio device for playback.
WARN                    alsa gstalsasink.c:765:gst_alsasink_open:<alsasink0> error: Playback open error on device 'default': No such file or directory

ERROR    2015-02-22 18:26:47,673 [3135:MainThread] mopidy.audio.actor
GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure. Debug message: gstplaysink.c(2758): gen_audio_chain (): /GstPlayBin2:playbin20/GstPlaySink:playsink

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜ ์ค‘ ์ผ๋ถ€๋Š” ์ž˜๋ชป๋œ ๋ฐฉ์‹์œผ๋กœ ์„ค์ •์„ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋งŽ์€ ๊ฐ์‚ฌ, trygveaa! Arch Wiki์—์„œ ํŠธ๋ฆญ์„ ์ฐพ์•˜์ง€๋งŒ ํŽ„์Šค ์‹ฑํฌ๋ฅผ ์ œ๋Œ€๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. (์‹ค์ œ๋กœ ์ด์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ๋ฌธ์„œ๋Š” ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

@trygveaa ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํŽ„์Šค ์˜ค๋””์˜ค๋ฅผ mopidy์™€ ํ•จ๊ป˜ ์ž‘๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ ์กฐ์–ธ์„ ๋”ฐ๋ž๊ณ  ์ด์ œ ๋งˆ์นจ๋‚ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰