본문 바로가기
Linux/Pogoplug

포고플러그 시리즈4에 아치리눅스 사용하기 (13) - mpd(Music Player Daemon) 설치하기

by 달토끼남편 2022. 10. 4.

MPD는 Music Player Daemon의 약자이다.

대몬이라는 것은 상주프로그램이라고 보면 된다. (사용자와 주고받는 것이 없이 백그라운드에서 돌고 있는 프로그램이다.)

 

mpd로 무엇을 할 수 있냐면 포고플러그를 마치 오디오처럼 쓸 수 있게 해준다. (스마트폰을 리모콘처럼 사용)

서버/클라이언트 구조이기 때문에 포고플러그에서 서버를 돌리면, 이를 조정할 수 있는 리모트 클라이언트 프로그램도 필요하다.

포고플러그에는 기본적으로 오디오출력단자가 없기 때문에 이를 위해 USB 사운드카드를 장착해야 한다.

오픈마켓 등에서 2,000원 정도면 구매할 수 있다. (택배비가 더 나온다. 

)

그리고 별도의 전원을 사용하는 스피커도 있어야 한다. (USB 전원을 사용한다면 USB 사운드카드에 손상을 줄 수도 있다고 상품설명에 나와있다.)

 

 

 

마이크입력과 헤드폰출력단자가 있는 저가형 USB 사운드카드

 

한가지 더 주의해야 할 것은 두께가 1cm 정도가 되기 때문에 포고플러그 시리즈4의 뒷면 USB 3.0 포트 2개 중 하나를 나처럼 이미 HDD 연결로 사용하고 있다면 두꺼워서 사운드카드를 끼울 수 없다. (다행히 예전에 쓰던 USB 연장선이 있어서 연결했다.)

 

 

 

1. mpd 설치하기 

 

mpd 설치를 위해 pacman을 실행했는데 처음부터 파일을 찾을 수 없다고 에러를 뿜어낸다. (이 에러 고치다 결국 시스템 날려먹고 복원 

)

이리저리 시도해보다 미러사이트 설정을 보니 현재 위치에서 가까운 미러사이트를 자동으로 찾아주는 Geo-IP 설정으로 되어 있다.

(캘리포니아 서버로 변경했는데 복원하면서 아마 변경된 듯 싶다.)

 

하지만 요즘 캘리포니아 미러사이트도 문제가 있는지 잘 안된다.

그래서 다시 뉴욕 미러사이트로 변경.

 

 

nano /etc/pacman.d/mirrorlist

 

---

## Geo-IP based mirror selection and load balancing

#Server = http://mirror.archlinuxarm.org/arm/$repo (#주석처리)

 

## New York

Server = http://us.mirror.archlinuxarm.org/arm/$repo (#주석제거)

----

 

pacman -Sy mpd

  

깔끔하게 설치가 되었다.

 

 

2. ALSA 설치하기

 

참고 : http://comta.kr/?p=4854 (데비안이긴 하지만 참고할 수 있다.)

         http://mpd.wikia.com/wiki/Configuration

 

ALSA도  Advanced Linux Sound Architecture의 약자다.

한마디로 리눅스에서 소리를 내게 하기 위한 규격이란 얘기.

 

그래서, 우리도 이 ALSA를 설치한다. (ArchLinux에는 기본적으로 설치가 되어 있지만 우리가 사용하는 ArchLinuxARM에는 없기에 별도로 설치해야 한다.)

 

 

pacman -Sy libao alsa-utils avahi libpulse

설치가 끝나면 사운드카드 구성을 살펴보자.

 

aplay -l

 

 

위와 같이 card 0, 그리고 device 0 라고 나온다.(이건 사용자마다 다를 수 있으니 꼭 확인이 필요하다.)

나중에 설정을 위해 꼭 필요한 부분이다.

 

 

 

그리고 ALSA의 볼륨믹서를 한번 실행해 보자.

 

alsamixer

 

 

 

 

사운드카드에서 제대로 소리가 나는지 스피커로 테스트해보자.

갑자기 노이즈가 크게 들릴 수 있으니 스피커 볼륨을 조절하고 종료할 때는 ctrl+c를 누른다.

핑크노이즈라고 하는데 아마 화이트노이즈를 좀 재미있게 표현한 것 같다.

 

speaker-test 

 

Ctrl+C (종료할 때)

 

그리고 기본으로 사운드카드를 잡아주도록 설정한다.

 

nano /etc/asound.conf

----

 

defaults.ctl.card 0 (앞서 확인한 사운드카드의 번호이다.)

defaults.pcm.card 0

defaults.timer.card 0

 

 

그런데 콤타에서도 지적하고 있지만 처음에 실행했을 때는 잘 되었지만 갑자기 사운드카드의 LED 가 꺼져버리고 aplay -l 해봐도 사운드카드가 없다고 나와버렸다.

다행히 리부팅 후 제대로 다시 잡히긴 했다. 

 

 

 

 

3. mpd 설정하기

 

자, 지금까지는 잘 설치가 된 것 같다.

이제부터가 중요한 mpd 설정이다.

분명 스피커 테스트를 해봤을 때도 핑크 노이즈가 들렸는데 아무리 음악을 플레이하고 해도 스피커로는 도무지 소리가 나지 않아 거의 몇 시간을 꼬박 삽질했다.

 

 

참고 : https://wiki.archlinux.org/index.php/Mpd

 

우선 음악들이 외장하드를 사용하는 FTP 사용자의 홈디렉토리 밑에 서브디렉토리로 music에 있다고 가정하고 설정한다.

그리고 해당경로는 특정 FTP 사용자의 홈디렉토리로 지정한다. (각자에 맞는 외장하드경로를 지정한다.)

 

 

mkdir -p /media/pogo/nekojp/.mpd/playlists

touch /media/pogo/nekojp/.mpd/{database,log,state,pid,sticker.sql}

여기서 nekojp 는 기존에 사용하고 있는 FTP 사용자 아이디다. 각자에 맞게 설정.

 

위의 참고링크에 보면 개별사용자 설정 및 글로벌설정이 있는데 개별 사용자 설정은 ~/.mpdconf 파일로 하게 되어있고 이 파일이 없을 경우 /etc/mpd.conf 파일을 사용하게 된다. 그래서, 처음부터 글로벌 설정으로 /etc/mpd.conf 파일을 이용해 작업한다. 

(녹색으로 된 부분은 자신의 하드 경로에 맞춰 변경한다.)

 

 

nano /etc/mpd.conf

 

---

music_directory         "/var/lib/mpd/music" 

playlist_directory       "/media/pogo/nekojp/.mpd/playlists"

db_file                         "/media/pogo/nekojp/.mpd/database"

log_file                        "syslog"

pid_file                        "/run/mpd/mpd.pid"

state_file                     "/media/pogo/nekojp/.mpd/state"

sticker_file                  "/media/pogo/nekojp/.mpd/sticker.sql"

 

user                            "mpd" (대몬을 실행할 유저이다.)

 

bind_to_address                "192.168.x.x" (포고플러그 내부 ip)

 

port                            "6600"

 

restore_paused "yes"  (이 옵션을 yes로 하면 클라이언트를 실행했을 때 자동연주가 되지 않고 일시정지로 된다.)

 

auto_update     "yes" (데이터베이스 자동업데이트)

 

 

audio_output {

        type            "alsa"

        name            "Pogoplug V.4" (원하는대로)

        device          "hw:0,0"        # optional (앞서 살펴본 숫자를 적어준다.)

        mixer_type      "software"      # optional

}

 

 

filesystem_charset              "UTF-8" (사실 이렇게 해도 한글 등이 깨지는 수가 있다.)

id3v1_encoding                  "UTF-8" 

.mpd 디렉토리의 소유권한은 mpd 가 가지도록 바꿔주자.

 

chown -R mpd:mpd /media/pogo/nekojp/.mpd

 

혹시 root의 홈디렉토리에 .mpd 디렉토리가 있다면 글로벌 설정을 했으므로 삭제

 

cd ~

ls -la

rm -R /.mpd 

 

 

 

4. 뮤직디렉토리 설정

 

설정에서는 아치리눅스가 설치된 USB 메모리에 뮤직 디렉토리가 있는 것으로 되어있다.

하지만 외장하드에 있는 뮤직 디렉토리를 사용할 것이므로 아래의 예와 같이 본인의 경로에 맞게 바꿔주고 마운트한다.

 

참고 :  http://jasonmaur.com/setting-mpd-and-mpc-use-dmenu-and-i3-arch-linux/

          https://wiki.archlinux.org/index.php/Mpd#Music_directory

 

mkdir /var/lib/mpd/music

chown mpd:mpd /var/lib/mpd/music

echo "/media/pogo/nekojp/music /var/lib/mpd/music none bind" >> /etc/fstab

mount -a

 

설정 후의 마운트 상황.

 

 

또는 심볼릭링크를 사용하는 방법도 있다.

 

mkdir /var/lib/mpd/music

ln -s /media/pogo/nekojp/music /var/lib/mpd/music/

 

 

 

 

4. mpd 실행하기

 

 mpd를 실행해 보면

 

mpd

listen: bind to '0.0.0.0:6600' failed: Address already in use (continuing anyway, because binding to '[::]:6600' succeeded)

 

(또는, systemctl start mpd)

실행했을 때 위와 같은 에러가 나는 경우가 있다.

bind_to_address 설정에서 포고플러그의 내부 ip 주소를 적어주면 된다.

 

참고 :  https://wiki.archlinux.org/index.php/Music_Player_Daemon/Troubleshooting

 

 

 

 

5. mpd 클라이언트(리모트) 설치하기

 

mpd를 위한 리모트 컨트롤 클라이언트를 설치해보자.

쉽게 말하자면 PC를 켜지않고도 스마트폰이나 웹페이지에서 리모트 컨트롤로 포고의 mpd를 조작해 스피커로 음악을 재생할 수 있도록 하는 것이다.

 

아래는 ncmpc 라는 것으로 콘솔 상에서 사용하는 클라이언트이다.

 

  

pacman -S ncmpc

 

다른 클라이언트들은 https://wiki.archlinux.org/index.php/Music_Player_Daemon#Clients 를 참고.

 

 

ncmpc -c 로 실행하면 위와 같이 컬러로 나오고, 그냥 실행하면 흑백으로 나온다.

1번을 누르면 키보드 조작에 대한 설명이 나온다.

 

 

 

 

3번을 눌러 Browse 메뉴로 가서 ctrl+u를 누르면 데이터베이스가 업데이트된다.

(용량에 따라 시간이 조금 걸릴 수 있으니 차분히 기다리자.)

위와 같이 영문은 괜찮으나 인코딩에 따라 한글파일명은 많이 깨진다.

 

원하는 디렉토리나 곡에서 스페이스바를 누르면 플레이리스트에 등록이 된다.

2번을 눌러 플레이리스트에서 곡을 선택하고 엔터를 치면 플레이를 시작한다.

만든 플레이리스트를 저장하고 싶으면 shift + S(대문자 S)를 누르면 화면 하단에 저장하라는 프롬프트가 나온다.

3번을 눌러 다시 Browse 메뉴로 가보면 내가 만든 플레이리스트가 저장되어 있는 것을 볼 수 있다.

 

이 플레이리스트는 앞서 만든 /media/pogo/nekojp/.mpd/playlists 디렉토리에 가보면 .m3u 파일로 저장이 되어 있다.

 

종료할 때는 ctrl+c 또는 q 를 누르면 된다.

 

 

6. mpd 웹클라이언트(리모트) 설치하기

 

다음으로 웹브라우저에서 조작할 수 있는 phpMpReloaded라는 웹기반의 클라이언트를 설치해보자.

 

만약 내부 IP 주소에서만 아니라 외부에서도 접속하겠다면  포트포워딩을 통해 설정하는 것도 잊지 말자.

mpd  기본 포트는 6600이다.

 

 

 

 

http://sourceforge.net/projects/phpmpreloaded/ 

 
여러 클라이언트들을 한데 모아두어 편리하다.
위의 링크에서 다운받아 웹서버에 업로드하자.
 
 
tar xvfz phpmpreloaded-1.2a.tar.gz (현재 1.2a 버전)
mv phpmpreloaded wmpc (디렉토리 이름이 너무 길어서 짧게 변경)
chown http.http wmpc (http는 아파치 서버를 설치하게 되면 기본적으로 등록되는 사용자다.)
 
그리고 웹브라우저로 접속을 해보자.
 
http://[내 도메인]/wmpc
 
위의 스크린샷같은 화면이 보이는가?
아마도 최신 버전의 PHP를 설치했다면 아무런 화면도 나오지 않을 것이다.
(바로 위의 스크린샷이 나온다면 버전이 조금 낮아도 관계없다.)
PHP  버전이 올라가면서 최신버전에서 일부 지원하지 않는 함수들을 사용했기 때문이다. (현재 내 PHP 버전은 5.4.17이다.)
 
wmpc 디렉토리로 이동하고 먼저 시간세팅부터 바꿔주자.
 
 
nano config/config.php
---
 
date_default_timezone_set  ( "Asia/Seoul" ); (처음에 유럽으로 세팅이 되어 있는데 서울로 변경하자.)
 
 
이번에는 index.php 파일에서 최신 버전과 호환이 안되는 함수를 수정한다.
 
nano index.php
---
 
//import_request_variables  ( 'gp', 'url_' ); (//로 주석처리 또는 삭제하고 아래 문장을 추가한다.)
extract($_REQUEST, EXTR_PREFIX_ALL|EXTR_REFS, 'url_');
 
 
그리고 다시 크롬이나 사파리같은 webkit 기반의 웹브라우저로 접속해 보면 정상적으로 보일 것이다. (파이어폭스에서도 제대로 되기는 하나 일부 css 가 안먹기도 한다.)
 
 
이 중 phpMp2를 클릭해 들어가 보자.
 
 
만약 mpd 를 실행했는데도 음악이 안나오거나 뮤직 디렉토리가 제대로 안보이거나 하면 Update 를 눌러서 데이터베이스를 업데이트 해주자.
 
그 외 MPD-Web-Remote는 스마트폰에서 접속했을 때 이용이 편리한 인터페이스이다.
 
 
끝으로 iOS용으로는 MPod같은 것도 있고, 안드로이드용은 Mpdroid 등이 있으니 편리한 것을 선택하면 되겠다.
 
 
iOS용 리모트 클라이언트인 MPod.
 
 
참고로 MPod에서는 스트리밍도 가능한 것 같지만 실제로 설정을 해보면 충돌이 일어나면서 바로 앱이 종료되어 버린다.
다른 사용자들도 리포트를 하는 걸로 봐서 아마 문제가 있지 않나 싶다.
 
 
 
 
7. http 스트리밍 설정
 
 
mpd가 실행 중이고 음악이 재생되고 있다면, 스트리밍을 지원하는 오디오 플레이어에서도 함께 들을 수 있다.(고 한다...-_-;)
아래와 같이 설정을 해준다.
기본 포트는 8000번 이기 때문에 스트리밍을 열 때 http://[내 도메인]:8000 으로 열면 된다.
 
위에 소개한 MPod같은 앱에서는 encoder를 vorbis대신 lame을 사용하라고 되어있다. (물론 크래쉬가 나서 스트리밍 자체를 쓸 수 없지만)
 
nano /etc/mpd.conf
-----
 
audio_output {
        type            "httpd"
        name            "My HTTP Stream"
        encoder         "vorbis"                # optional, vorbis or lame
        port            "8000"
        bind_to_address "0.0.0.0"               # optional, IPv4 or IPv6
##      quality         "5.0"                   # do not define if bitrate is defined
        bitrate         "128"                   # do not define if quality is defined
        format          "44100:16:1"
#       max_clients     "0"                     # optional 0=no limit
}
한번 itunes에서 테스트를 해보았다...스피커로 재생되는 음악 자체도 버벅댈 뿐더러 버퍼링 때문인지 스트리밍 자체도 안된다.
방법에 문제가 있는 것 같다. 
스트리밍 방법을 계속 찾아보고 있지만 아직까지 미스테리...-_-;
 
 
설치를 잘못했는지 아니면 사운드카드의 문제인지 모르겠지만, 음악을 플레이하다보면 종종 하드의 마운트가 풀려버리고
사운드카드도 꺼져버리는 현상이 발생한다.
 
시리즈 4 뒷면의 USB 3.0 포트에 연결해서 사용했는데 이 포트가 좀 불안정하다는 얘기도 있고, USB 포트의 전원 부족일 수도 있어 유전원 USB로 연결해 보았지만 마찬가지 현상.
 
현재로써는 시리즈4의 불안정때문인 것으로 보인다.
mpd 사용을 위해서는 데비안이나 E02 버전 등을 사용하길... 
(http://cafe.naver.com/audiostudy 카페에 mpd 전용 이미지들이 있다.)