안녕하세요. 이번에는 U5PVR 에 MPD 를 설치해 보겠습니다.
MPD 운용시 ALSAMIXER 를 통해 USB DAC 과 연동이 가능합니다.
저도 실은 정확하게 MPD 에 대해서 모르기 때문에 USB DAC 을 통해서 원음 재생이 가능하게 설정하는 방법을 정확하게 모릅니다. 차후 보충하도록 하겠습니다.
시작합니다.
1. MPD 및 의존성 패키지 설치하기
아래의 명령으로 MPD 를 설치합니다.
root@u5pvr-debian:~# apt-get install mpd alsa-base alsa-oss alsa-utils
다음으로 MPD 가 정상적으로 동작하게 하기 위해서 설정파일을 살짝 수정합니다.
root@u5pvr-debian:~# nano /etc/mpd.conf
대략적으로 수정이 끝났습니다. 정상적으로 동작하는지 체크를 해 봅니다.
root@u5pvr-debian:~# netstat -nlp | grep mpd
tcp 0 0 0.0.0.0:6600 0.0.0.0:* LISTEN 23392/mpd
root@u5pvr-debian:~#
정상적으로 동작이 되고 있네요 ㅎㅎ
2. 출력 장치 설정하기
기본적으로 MPD 를 통해서 HTTP 출력을 하게 하여 음악 스트리밍 서버로 사용할 수 있습니다.
그런데 이번에는 물리 장치로 출력을 내보내는 설정을 해 보겠습니다.
다음 명령어로 재생할 장치 이름을 확인합니다.
root@u5pvr-debian:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HISIAIAO [HISI-AIAO], device 0: Playback aiao-hifi-0 [] <- 찐하게 된 부분이 장치 이름입니다.
Subdevices: 1/1
Subdevice #0: subdevice #0
root@u5pvr-debian:~#
위에 뜨는 장치는 U5PVR 에 장착된 기본 장치입니다. USB 로 DAC 을 연결하면 다른 장치가 추가적으로 뜰 것입니다.
저장 후, 다시 mpd 서비스를 재시작 합니다.
root@u5pvr-debian:~# service mpd restart
[ ok ] Stopping Music Player Daemon: mpd.
[ ok ] Starting Music Player Daemon: mpd.
root@u5pvr-debian:~#
3. MPD 클라이언트 - MPDroid
일단 스마트폰에서 U5PVR 의 재생을 원격 컨트롤 하기 위해서 아래의 앱을 설치합니다.
https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid&hl=ko
설치를 하고 나서 아래의 설정을 진행합니다.
기본 연결 설정으로 이동합니다.
호스트를 U5PVR IP 입력합니다.
(나머지는 설정하신 대로 입력하시면 됩니다.)
U5PVR 기본 오디오가 잘 물려 있음을 알 수 있습니다.
스마트폰에서 재생을 누르게 되면 U5PVR HDMI 나 혹은 AV 단자로 소리가 나갑니다.
동영상으로 보시면 아래와 같습니다. (U5PVR 이 물린 HDMI 모니터에서 음악이 나오는 중입니다.)
추가적으로 MPD 가 음악 재생중일때는 U5PVR 안드로이드에서 DAC 우선순위가 밀리기 때문에 영상 재생이 원활이 되지 않고 유튜브의 경우에는 재생이 시작되지 않습니다.
MPD 재생을 정지하면 U5PVR 안드로이드 앱 이용이 정상화 됩니다.
AV 짹에 이어폰 꼽아 보시면 음악이 나오는 것을 확인하실 수 있습니다. 고음질 플레이가 필요없으시면 그냥 내장 DAC 을 쓰셔도 무방합니다.
기본 구성품에 AV 단자도 포함되어 있으니 잘 활용해 보시면 될듯 합니다.
[위 두 사진은 블루님께서 찍어서 보정을 한 것으로 블루님 허락 외에는 무단 사용하실 수 없습니다. 이 게시글은 허락을 받았습니다.]
S/PDIF 단자로 음악이 나가는지는 잘 모르겠네요.
4. MPD 웹 클라이언트 - ympd
실제로 Volumio 웹 UI 를 따고 싶었지만 이게 Volumio 는 하나의 운영체제로 배포되는 것이라 따로 설치가 어렵네요. 그래서 대체 웹 UI 를 설치해 봅니다.
의존성 패키지를 설치합니다.
(build-essential 안에 의존성의로 cmake 가 포함되어 있을 수 있습니다. 빌드 중에 에러가 나서 가이드를 약간 수정했습니다.)
(SSL 연결을 사용하시려면 openssl 도 같이 설치하시길 바랍니다.)
root@u5pvr-debian:~# apt-get install cmake git build-essential libmpdclient-dev libssl-dev pkg-config
소스를 받고 빌드합니다.
root@u5pvr-debian:~# git clone https://github.com/notandy/ympd.git
Cloning into 'ympd'...
remote: Counting objects: 861, done.
remote: Total 861 (delta 0), reused 0 (delta 0), pack-reused 861
Receiving objects: 100% (861/861), 629.50 KiB | 335.00 KiB/s, done.
Resolving deltas: 100% (544/544), done.
Checking connectivity... done.
root@u5pvr-debian:~#
받은 위치로 이동하여 빌드합니다.
root@u5pvr-debian:~# cd ympd/
root@u5pvr-debian:~/ympd# ls
CMakeLists.txt LICENSE README.md cmake contrib htdocs src tools ympd.1
root@u5pvr-debian:~/ympd# mkdir build
root@u5pvr-debian:~/ympd# cd build
root@u5pvr-debian:~/ympd/build# cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28")
-- Configuring done
-- Generating done
-- Build files have been written to: /root/ympd/build
root@u5pvr-debian:~/ympd/build# make && make install
Scanning dependencies of target mkdata
[ 12%] Building C object CMakeFiles/mkdata.dir/tools/mkdata.c.o
Linking C executable mkdata
[ 12%] Built target mkdata
[ 25%] Generating assets.c
Scanning dependencies of target ympd
[ 37%] Building C object CMakeFiles/ympd.dir/src/ympd.c.o
[ 50%] Building C object CMakeFiles/ympd.dir/src/mpd_client.c.o
[ 62%] Building C object CMakeFiles/ympd.dir/src/mongoose.c.o
[ 75%] Building C object CMakeFiles/ympd.dir/src/json_encode.c.o
[ 87%] Building C object CMakeFiles/ympd.dir/src/http_server.c.o
[100%] Building C object CMakeFiles/ympd.dir/assets.c.o
Linking C executable ympd
[100%] Built target ympd
[ 12%] Built target mkdata
[100%] Built target ympd
Install the project...
-- Install configuration: ""
-- Installing: /usr/bin/ympd
-- Installing: /usr/share/man/man1/ympd.1
root@u5pvr-debian:~/ympd/build#
설치가 정상적으로 되었습니다. 실행은 아래와 같이 합니다.
root@u5pvr-debian:~# ympd -h 127.0.0.1 -p 6600 -w 0.0.0.0:7700
MPD Connecting to 127.0.0.1:6600
MPD connected.
ympd -h mpd주소 -p mpd포트 -w 웹UI주소:포트
따라서 http://u5pvr_ip_address:7700/ 으로 이동해 보시면 아래의 Web UI 가 열립니다.
간단히 웹 리모콘이 생겼습니다.
그런데 프로그램 실행을 매번 저렇게 할 수 없음으로 init.d 스크립트를 추가합니다.
(귀찮으시면 nohup & 을 사용하셔도 됩니다.)
root@u5pvr-debian:~# nano /etc/init.d/ympd
++ 번외편
기본적으로 리눅스 펌웨어에는 음악 태그 깨짐을 해결할 수 있는 명령이 들어가 있습니다.
음악이 들어있는 폴더로 이동하여 mp3conv 라고 입력하면 태그를 cp949 바꾸어 태그가 깨지지 않게 해줍니다.
하위 폴더까지 모조리 싹 다 바꿔줍니다. (ogg mp3 flac 파일들)
root@u5pvr-debian:/# cd /mnt/sda/sda1/music
root@u5pvr-debian:/mnt/sda/sda1/music# mp3conv
('Updating', 'WINNER - REALLY REALLY.mp3')
('Updating', Marry Me.mp3')
..................
이렇게 DAC 과 연동을 하게 되면 나만의 오디오 시스템이 구축 가능합니다.
물론 SPI 통신을 통해 DAC 과 연동을 해 보고 싶지만 잘 모르겠네요 ㅎㅎ..
감사합니다.