MPD(Music Player Daemon)와 칸타타(Cantata)와 만남 |
1. 개요
오디오 스트리밍 서버로 가장 많이 사용되고 있는 icecast와 ices를 No1.Linux에서는 기본 지원하는데, 이 강좌에서는 icecast가 아닌 MPD(Music Player Daemon)으로 오디오 스트리밍 서버를 구축하는 방법을 알아보고, MPD의 클라이언트로 칸타타 프로그램을 설치하여 오디오를 감상하는 방법을 알아봅니다.
2. 준비물
- No1.Linux-2016 Spring 버전과 그 이후의 버전
- MPD rpm 패키지
- cantata rpm 패캐지(No1.Linux 리포지토리 서버로부터 설치 가능)
- mp3 음원 파일
3. MPD 서버 구축
3.1 mpd 패키지 설치
시냅틱을 실행하여 검색 도구 아이콘을 클릭하여 mpd를 키워드로 검색하여 mpd 패키지를 설치합니다.
3.2 mpd 환경설정(/etc/mpd.conf)
step01. mcedit /etc/mpd.conf 명령을 실행하여 mpd.conf 파일을 수정합니다.
step02. 경로 설정
music_directory 경로를 "/var/lib/mpd/Music"으로 설정하고 이 디렉토리에 음원 파일이 있는 경로를 심볼릭 링크합니다.
즉 /home/no1linux/Music 디렉토리에 음원 파일이 있다면 다음과 같이 심볼릭 링크를 걸어 줄 수 있습니다.
# ln -s /home/no1linux/Music /var/lib/mpd/Music
playlist_directory 경로를 "/var/lib/mpd/playlists" 경로로 설정합니다.
step03. 사용자및 경청 주소및 포트 설정
사용자를 기본 사용자인 mpd로 설정하고 접속 가능한 주소를 localhost 또는 any(0.0.0.0)으로 설정합니다. MPD 서버가 로컬이라면 localhost로 설정하거나 접속을 허용할 내부 클라이언트 주소를 명시해 주면 됩니다. 외부로 스트리밍 서비스를 하는 경우에는 "any"로 설정합니다. mdp의 기본 포트는 TCP 6600입니다. 외부에 서비스를 제공하고자 할 때는 /etc/shorewall/rules.drakx에서 이 포트를 추기해 주어 방화벽에서 제외시켜 주어야 합니다.
step04. 퍼미션 설정
클라이언트가 mpd 서버에 접속할 수 있는 비밀번호를 설정합니다. passwd@ 부분을 여러분의 비밀번호로 설정해 줍니다.
예를 들어 linux라는 비번으로 사용하고자 한다면 linux@로 설정해 주면 됩니다.
step05. 오디오 출력 설정
넘버원 리눅스에서는 사운드 드라이버로 기본적으로 pulse를 지원합니다. mpd도 pulse를 지원하지만, 이에 관련된 설정이 없으므로 ALSA로 설정된 블록을 상기 설정과 같이 수정합니다. type을 pulse로 설정합니다. 만일 pulse를 사용하지 않고, alsa를 사용한다면 alsa로 설정해 주어야 합니다. name은 서버에 맞는 이름을 부여해 주면 되고, device는 사운드 카드의 장치명을 정확히 지정합니다. 사운드 카드의 장치명은 'aplay -l' 명령을 이용하여 확인합니다. encorder 플러그인으로는 flac, lame, vorbis등이 있는데, mp3 음원 파일은 lame으로, ogg 음원 파일은 vorbis로 지정해 주면 됩니다.
step06. 믹서 설정
사운드 믹서 기능을 사용하고자 한다면 mixer_type을 "pulse"로 설정하면 됩니다.
3.3 mpd 실행
# /etc/init.d/mpd start [시작]
# /etc/init.d/mpd stop [종료]
# /etc/init.d/mpd restart [재시작]
4. 칸타타(Cantata)
칸타타는 mpd 서버의 클라이언트 프로그램으로 qt 라이브러리로 만들어진 프로그램입니다. 칸타타는 mpd 서버에서 설정한 경로에 있는 음원 파일을 네트워크를 통하여 실행하여 감상할 수 있게 해 주는 프로그램으로, 음원 파일 연주 외에 icecast, shoutcast, tunein으로 서비스되는 인터넷 스트리밍 서비스를 지원하여 각종 인터넷 라디오 방송국을 선국하여 청취할 수 있습니다.
4.1 칸타타 설치
넘버원 리눅스의 모태인 PCLinuxOS의 리포지토리에서는 칸타타를 지원하지 않습니다. 칸타타를 설치하기 위해서는 첨부된 파일을 다운로드하여 설치하거나 넘버원 리눅스 리포지토리 서버로부터 시냅틱으로 설치하면 됩니다.
4.2 넘버원 리눅스 리포지토리 서버 추가하기및 칸타타 설치
step01. 다음과 같이 /etc/apt/sources.list 파일에 넘버원 리눅스 리포지토리 위치를 추가합니다.
step02. 시냅틱을 실행하여 [다시 불러오기] 도구 아이콘을 클릭하여 리포지토리 DB를 갱신합니다.
step03. 검색 도구 아이콘을 클릭하여 cantata를 검색하여 칸타타 패키지를 설치합니다.
4.3 칸타타 실행
칸타타 패키지 빌드를 뭔가 빠트려서 그런지 런쳐(시작메뉴)에는 등록되어 있지 않군요.(rpm 재빌드함)[시작메뉴 > 사운드 > 칸타타]를 선택하여 칸타타를 실행하거나 ALT+F2키를 눌러 cantata를 입력하여 칸타타를 실행하거나 콘솔에서 칸타타 명령을 입력하여 실행합니다.
[표준]을 선택하여 [다음] 버튼을 클릭합니다.
mpd에서 설정한 비밀번호와 포트를 입력합니다. 만일 서버가 로컬이 아닌 내부 네트워크상에 있는 서버나 외부에 있는 서버라 한다면 호스트 입력란에 서버의 주소를 입력합니다.
음악 폴더는 mpd 서버에서 music_directory 옵션으로 명시한 경로에 심볼릭 링크한 경로를 지정합니다. 이를 위해서 음원 파일이 있는 경로를 이 옵션의 경로로 심볼릭 링크하여 심볼릭 링크한 하위 경로를 지정해 주면 됩니다.
[연결] 버튼을 클릭하여 mpd 서버에 연결합니다. 서버에 연결되면 [다음] 버튼이 활성화되는데, [다음] 버튼을 클릭합니다.
[다음] 버튼을 클릭합니다.
[완료] 버튼을 클릭하여 칸타타 설정을 완료합니다.
4.4 DB 업데이트
칸타타 오른쪽 상단 느낌표 아이콘옆에 있는 설정 아이콘을 클릭하여 mpd서버에 있는 음원 파일에 대한 데이터베이스를 갱신하기 위해서 [데이터베이스 새로 읽기]를 클릭합니다.
[새로 고침]을 클릭하여 DB를 갱신합니다.
4.5 음원 파일 감상하기
[폴더] 메뉴에서 음원이 있는 폴더가 보이면 해당 폴더명을 클릭하여 선곡을 합니다. 파일을 선곡한 후에 플레이 버튼을 클릭합니다.
mpd 서버로부터 음원 파일이 스트리밍됨을 양 스피커로 확인할 수 있습니다.
4.6 인터넷 라디오 방송국 듣기
칸타타는 Icecast, Shoutcast, Tunein 등의 다양한 스트리밍 서버들을 지원합니다. 이들 서버를 선택하여 여러분이 애호하는 장르의 음악을 감상할 수 있습니다.
5. 네트워크 펄스오디오 서버 설정
5.1 개요
MPD 서버를 구축한 후 클라이언트 시스템에서 칸타타를 실행하여 MPD 서버에 접속하면 음원이 실행중이어도 사운드가 나오질 않습니다. 이는 펄스오디오 서버 설정이 되어 있지 않아서 사운드 출력이 되질 않는 것이므로, 추가적으로 펄스 오디오와 MPD 서버를 설정해야 합니다.
5.2 MPD 서버 설정
/etc/mpd.conf 파일에 sink 설정을 다음과 같이 추가합니다.
5.3 MPD서버의 펄스오디오 설정
/etc/pulse/default.pa 파일에서 다음 설정의 주석을 제거합니다.
load-module module-null-sink sink_name=rtp
load-module module-rtp-send source=rtp.monitor
5.4 MPD 데몬 재실행
/etc/init.d/mpd restart 명령을 실행하여 데몬을 재실행합니다.
5.5 클라이언트의 펄스오디오 설정
/etc/pulse/default.pa 파일에서 다음 설정의 주석을 제거합니다.
load-module module-rtp-recv
5.6 클라이언트의 펄스 오디오 데몬 실행
load-module module-rtp-recv
자, 이제 칸타타를 실행하여 음원을 선택하여 실행하면 클라이언트 시스템으로 사운드가 나올 것입니다. 클라이언트의 사운드 시스템은 정상이지만, 서버쪽에서 음원을 실행하였을 때 사운드가 나오질 않을때는 다음과 같이 설정해 주면 됩니다.
/etc/mpd.conf 파일의 오디오 출력 부분에 server "127.0.0.1"를 추가하고, sink 설정엔 주석 처리합니다. 그리고 /etc/pulse/default.pa 에서 load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1를 추가하거나 주석해제하고 수정합니다.
mpd와 pulseaudio를 재실행주면 됩니다. 이렇게 하면 클라이언트에서 칸타타를 실행하면 사운드는 클라이언트에선 출력되지 않고 서버쪽에서도 사운드가 나오며, 서버쪽에서도 칸타타를 실행해도 서버의 스피커로 출력됩니다.
6. MPD 음원을 ICECAST 서버로 송출하기
6.1 개요
Icecast는 Ogg 음원을 스트리밍을 해 주는 서버 프로그램으로 iceS, Darkice, Mixxx, MPD, Ezstream 등 다양한 음원 클라이언트를 지원하고 있습니다.
Icecast로 인터넷 스트리밍 서버를 구축하여 로컬에 있는 OGG 음원을 네트워크상에서 미디어 플레이어로 재생하여 감상할 수 있으며, iceS와 같은 소스 클라이언트를 사용하여 여러분의 컴퓨터에서 마이크를 이용하여 라이브 방송을 서비스할 수 있습니다. Icecast와 iceS를 이용한 인터넷 스트리밍 서버 구축에 관한 것은 "리눅스의 모든 것"에선 829~835쪽에 기술되어 있습니다.
지금까지 살펴본 MPD 역시 Icecast로 송출할 수 있는 기능을 제공하고 있습니다. 칸타타에서 실행한 음원 파일을 스피커가 아닌 인터넷상으로 송출하여 원격 시스템의 미디어 재생기를 통하여 들을 수 있게 할 수 있습니다. Icecast 서버가 구축되어 있는 상태에서 icecast 서버로 송출하는 방법과 클라이언트 시스템에서 인터넷 스트리밍 서비스를 사용하는 방법에 대해서 알아보겠습니다.
6.2 MPD 서버 설정
상기 설정에서 Icecast의 host와 port 그리고 password 설정만 수정하면 됩니다. 그리고 나서 mpd 데몬을 재실행하면 icecast 서버로 송출할 준비가 됩니다.
6.3 스트리밍 서비스 감상하기
칸타타를 실행하여 음원을 재생합니다. 그러면 사운드는 스피커로 출력되지 않고 아무런 소리가 나질 않습니다. 음원이 Icecast 서버로 송출되고 있기 때문입니다. vlc이나 인터넷 스트리밍을 지원하는 미디어 재생기를 실행하여 URL주소와 마운트명을 입력하여 접속합니다. 만일 mplayer를 이용한다면 콘솔에서 다음과 같이 입력하여 실행하면 됩니다.
$ mplayer http://서버주소:포트번호/mpd.ogg
* 플레이 진행 상태바는 돌아가는데 펄스오디오 사운드 출력이 안될 때
/etc/pulse/client.conf 파일 설정에서 audospawn= yes 설정 앞에 세미콜론(;) 처리한 후 mpd 프로세스를 죽인 후에 펄스오디오 프로세스를 죽이고나서 다시 mpd를 띄워 주면 됩니다.