Language:EN / NE / AE / DE / IT

안녕하세요. 이번에는 U5PVR 에 Subsonic Music Streamer 를 설치해 보겠습니다.


http://www.subsonic.org/



음악을 웹 혹은 모바일 장치로 스트리밍할 수 있습니다.



그럼 바로 설치해 보겠습니다.



1. JAVA 설치하기


아래의 JAVA 홈페이지로 이동하여 바이너리를 직접 받거나 아니면 download.djjproject.com 을 통해서 바이너리를 받아주시길 바랍니다.


http://www.oracle.com/technetwork/java/embedded/overview/index.html




그 다음 원하는 위치에 풀어주시길 바랍니다. 저는 /opt/ 에 풀어 보겠습니다.


root@u5pvr-debian:~# wget http://u5pvr.djjproject.com/jdk-8u131-linux-arm32-vfp-hflt.tar.gz

converted 'http://download.djjproject.com/u5pvr/jdk-8u131-linux-arm32-vfp-hflt.tar.gz' (ANSI_X3.4-1968) -> 'http://download.djjproject.com/u5pvr/jdk-8u131-linux-arm32-vfp-hflt.tar.gz' (UTF-8)

--2017-05-18 22:06:03--  http://download.djjproject.com/u5pvr/jdk-8u131-linux-arm32-vfp-hflt.tar.gz

Resolving download.djjproject.com (download.djjproject.com)... 1.226.113.222

Connecting to download.djjproject.com (download.djjproject.com)|1.226.113.222|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 81648626 (78M) [application/x-gzip]

Saving to: 'jdk-8u131-linux-arm32-vfp-hflt.tar.gz'


jdk-8u131-linux-arm32-vfp-hflt.tar.gz           100%[=======================================================================================================>]  77.87M  10.9MB/s   in 7.5s


2017-05-18 22:06:11 (10.4 MB/s) - 'jdk-8u131-linux-arm32-vfp-hflt.tar.gz' saved [81648626/81648626]


# jdk 압축파일을 opt 폴더로 옮김

root@u5pvr-debian:~# mv jdk-8u131-linux-arm32-vfp-hflt.tar.gz /opt


root@u5pvr-debian:~# cd /opt/

root@u5pvr-debian:/opt# ls

jdk-8u131-linux-arm32-vfp-hflt.tar.gz


# jdk 압축파일 압축을 품

root@u5pvr-debian:/opt# tar xf jdk-8u131-linux-arm32-vfp-hflt.tar.gz

root@u5pvr-debian:/opt# ls

jdk-8u131-linux-arm32-vfp-hflt.tar.gz  jdk1.8.0_131


# 폴더이름을 java 로 바꿈

root@u5pvr-debian:/opt# mv jdk1.8.0_131/ java

root@u5pvr-debian:/opt# rm jdk-8u131-linux-arm32-vfp-hflt.tar.gz


결론적으로 파일 구조는 아래와 같이 구성되었습니다.


root@u5pvr-debian:/opt# ls

java




2. 서브소닉 설치하기


게시글 상단 subsonic 공식 홈페이지에서 debian/ubuntu 용 설치파일 .deb 를 받습니다. 그리고 설치합니다.


root@u5pvr-debian:~# wget https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.0.deb

converted 'https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.0.deb' (ANSI_X3.4-1968) -> 'https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.0.deb' (UTF-8)

--2017-05-18 22:19:00--  https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.0.deb

Resolving s3-eu-west-1.amazonaws.com (s3-eu-west-1.amazonaws.com)... 52.218.64.92

Connecting to s3-eu-west-1.amazonaws.com (s3-eu-west-1.amazonaws.com)|52.218.64.92|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 58514186 (56M) [application/x-debian-package]

Saving to: 'subsonic-6.0.deb'


subsonic-6.0.deb                                     100%[=======================================================================================================================>]  55.80M  82.1KB/s   in 5m 19s


2017-05-18 22:24:21 (179 KB/s) - 'subsonic-6.0.deb' saved [58514186/58514186]


root@u5pvr-debian:~# dpkg -i subsonic-6.0.deb

Selecting previously unselected package subsonic.

(Reading database ... 22365 files and directories currently installed.)

Preparing to unpack subsonic-6.0.deb ...

Unpacking subsonic (6.0) ...

Setting up subsonic (6.0) ...

Started Subsonic [PID 9816, /var/subsonic/subsonic_sh.log]

Processing triggers for systemd (215-17+deb8u6) ...


JAVA_HOME 을 정의하지 않고 스크립트에 바로 반영을 해 보겠습니다.


root@u5pvr-debian:~# nano /usr/share/subsonic/subsonic.sh



# Use JAVA_HOME if set, otherwise assume java is in the path.

JAVA=java

if [ -e "${JAVA_HOME}" ]

    then

    JAVA=${JAVA_HOME}/bin/java

fi


# 위부분을 아래 부분으로 대체합니다.


# Use JAVA_HOME if set, otherwise assume java is in the path.

JAVA=/opt/java/bin/java


# subsonic 을 재시작합니다.

root@u5pvr-debian:~# service subsonic restart

[....] Restarting Subsonic Daemon: subsonicStarted Subsonic [PID 6298, /var/subsonic/subsonic_sh.log]

. ok

root@u5pvr-debian:~#


대략 15초 정도 기다리면 정상적으로 실행이 되어 있습니다.


root@u5pvr-debian:~# netstat -nlp | grep 4040

tcp6       0      0 :::4040                 :::*                    LISTEN      9816/java

root@u5pvr-debian:~#


설치가 끝났습니다.



3. 기본설정 진행하기


웹 UI 로 접근하여 기본설정을 진행합니다.


http://u5pvr_ipaddress:4040/


처음 로그인은 admin / admin 입니다.



설정으로 이동합니다.



Media Folders 설정에서 음악이 있는 위치를 설정합니다. 여러개 설정이 가능합니다.


그리고 SAVE 버튼을 한번 누른 후, Scan Media Folders Now 를 누릅니다. 그럼 음악들이 검색이 됩니다.



그리고 USERS 탭으로 이동하여 admin 계정에 대해서 비밀번호를 수정합니다.



새 사용자는 아래와 같이 권한을 세부적으로 설정하여 생성할 수 있습니다.



본 카페에 음감 열풍이 올 조짐이 보임에 따라 원음 재생을 지원하는 스마트폰을 대상으로 아래 설정을 변경하여 원음 재생이 되도록 할 수 있습니다.


그러나 FLAC 이나 WAV 파일의 경우 파일을 원본으로 내려 재생을 하기 때문에 데이터 요금이 많이 발생될 것입니다.


아래의 트랜스코딩 옵션을 삭제하고 다운샘플 설정을 삭제하면 원음으로 재생이 가능해 집니다. 


(지원되지 않는 기기가 클라이언트로 연결될 경우 재생이 불가할  수 있습니다.)



기본적인 설정을 끝내고 음악이 스캔된 대시보드 사진입니다.



인덱스를 누르게 되면 폴더명 기준으로 나열해 줍니다.



대략적으로 아래의 방법으로 현 재생목록에 추가가 가능합니다.



한편, 재생중일 때 팝업을 지원하는 브라우저에서는 우측 하단에 지금 재생중인 음악 정보도 같이 뜹니다.



하단 플레이 바에 마우스를 올리면 아래처럼 현재 재생 목록이 서랍처럼 열립니다.



요정도로 웹 UI 를 통해 기초 설정을 하는 것과 간단 사용방법을 마칩니다.



4. Subsonic Music Streamer 공식 안드로이드 앱과 연동하기


아래의 사이트에 가시면 각종 운영체제에 맞게 만들어진 클라이언트 목록이 있습니다.


마음에 드는 것으로 사용을 하시면 됩니다.


http://www.subsonic.org/pages/apps.jsp


안드로이드에서 추천드리는 클라이언트는 아래의 두가지 입니다.


1. 공식 Subsonic Music Streamer

https://play.google.com/store/apps/details?id=net.sourceforge.subsonic.androidapp


2. 서드파티 Dsub for Subsonic

https://play.google.com/store/apps/details?id=github.daneren2005.dsub

(깃허브 릴리즈 버전 다운로드 - https://github.com/daneren2005/Subsonic/releases)


이번 글에서는 Subsonic 공식 앱과 연동을 해 보도록 하겠습니다. 


추가적으로 외부에서 사용하실 예정이시라면 포트포워딩은 아래와 같이 하시면 됩니다.



처음 키면 아래와 같이 되어 있습니다. 우측 메뉴모양을 누르고 설정으로 진입합니다.




아래에 SERVERS 탭에 있는 서버 목록을 수정하거나 새로 추가합니다.



아래처럼 사용환경에 맞게 설정을 합니다.



정상적으로 연결이 되었습니다 ㅎㅎ..





5. 한글 태그 깨짐 문제 일괄 해결하기.


U5PVR 리눅스 펌웨어에는 python-mutagen 패키지를 통한 태그 변환 명령어가 들어 있습니다.


작업 폴더에서 하위 폴더 모조리 mp3 / flac / ogg 파일에 대해서 태그를 cp949 로 바꿔 줍니다. 그 후 Subsonic 에서 다시 미디어 스캔을 돌리시면 태그가 깨지지 않습니다.




root@u5pvr-debian:/mnt/sda/sda1/music/# mp3conv

('Updating', './001 TWICE (\xed\x8a\xb8\xec\x99\x80\xec\x9d\xb4\xec\x8a\xa4)-01-KNOCK KNOCK.mp3')

('Updating', './001 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xed\x8c\x94\xeb\xa0\x88\xed\x8a\xb8 (Feat. G-DRAGON)_Naver81.mp3')

('Updating', './002 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x9d\xb4 \xec\xa7\x80\xea\xb8\x88_Naver81.mp3')

('Updating', './002 \xec\xa0\x95\xed\x82\xa4-01-\xeb\xb6\x80\xeb\x8b\xb4\xec\x9d\xb4 \xeb\x8f\xbc (Feat. \xed\x9c\x98\xec\x9d\xb8 Of \xeb\xa7\x88\xeb\xa7\x88\xeb\xac\xb4).mp3')

('Updating', './003 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x9d\xb4\xeb\x9f\xb0 \xec\x97\x94\xeb\x94\xa9_Naver81.mp3')

('Updating', './003 \xec\x97\x90\xec\x9d\xbc\xeb\xa6\xac-01-\xec\xb2\xab\xeb\x88\x88\xec\xb2\x98\xeb\x9f\xbc \xeb\x84\x88\xec\x97\x90\xea\xb2\x8c \xea\xb0\x80\xea\xb2\xa0\xeb\x8b\xa4.mp3')

('Updating', './004 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x9e\xbc\xec\x9e\xbc_Naver81.mp3')

('Updating', './004 \xed\x83\x9c\xec\x97\xb0 (TAEYEON)-01-Fine.mp3')

('Updating', './005 Red Velvet (\xeb\xa0\x88\xeb\x93\x9c\xeb\xb2\xa8\xeb\xb2\xb3)-01-Rookie.mp3')

('Updating', './005 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x9d\xb4\xeb\xa6\x84\xec\x97\x90\xea\xb2\x8c_Naver81.mp3')

('Updating', './006 \xeb\xb3\xbc\xeb\xb9\xa8\xea\xb0\x84\xec\x82\xac\xec\xb6\x98\xea\xb8\xb0-01-\xec\xa2\x8b\xeb\x8b\xa4\xea\xb3\xa0 \xeb\xa7\x90\xed\x95\xb4.mp3')

('Updating', './006 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-Black Out_Naver81.mp3')

('Updating', './007 \xeb\xa7\x88\xed\x81\xac\xed\x88\xbd (MAKTUB)-01-Marry Me.mp3')

('Updating', './007 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x82\xac\xeb\x9e\x91\xec\x9d\xb4 \xec\x9e\x98 (With \xec\x98\xa4\xed\x98\x81)_Naver81.mp3')

('Updating', './008 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xeb\xa7\x88\xec\xb9\xa8\xed\x91\x9c_Naver81.mp3')

('Updating', './008 \xec\x95\x85\xeb\x8f\x99\xeb\xae\xa4\xec\xa7\x80\xec\x85\x98-03-\xec\x98\xa4\xeb\x9e\x9c \xeb\x82\xa0 \xec\x98\xa4\xeb\x9e\x9c \xeb\xb0\xa4.mp3')

('Updating', './009 \xeb\xb0\xa9\xed\x83\x84\xec\x86\x8c\xeb\x85\x84\xeb\x8b\xa8-15-\xeb\xb4\x84\xeb\x82\xa0.mp3')

('Updating', './009 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xea\xb7\xb8\xeb\xa0\x87\xea\xb2\x8c \xec\x82\xac\xeb\x9e\x91\xec\x9d\x80_Naver81.mp3')

('Updating', './010 \xeb\xb8\x94\xeb\x9d\xbd\xeb\xb9\x84 (Block B)-01-YESTERDAY.mp3')

root@u5pvr-debian:/mnt/sda/sda1/music/#




이로써 Subsonic 게시글을 마치도록 하겠습니다 ㅎㅎ..