[Synology] VideoStation(DS Video) Frame Rate 올리기+AirVideo 부럽지 않은 동영상 스트리밍 환경 구축하기

Ryun   
   조회 55809   추천 4    

Synology NAS의 Video Station을 설치하고, PC나 폰의 DS Video로 영상을 감상하면 Frame Rate가 낮아 정상적으로 영상을 보기가 어렵습니다. 그저 스트리밍이 가능하다는것에 의의를 두는 그런 느낌이였죠. 이제 이걸 AirVideo 부럽지 않은 동영상 스트리밍 환경을 구축하여 봅시다.

제가 전에 동영상 스트리밍을 이용하던 환경은 이렇습니다.
1) Synology NAS + WebDAV
2) iPad + nPlayer($2.99) + Wibro, Tethering
3) Android + Dice Player + 3G or LTE

1번에서 동영상 파일에 접근을 위해  WebDAV를 사용합니다. WebDAV를 사용하면 80(HTTP), 443(HTTPS)포트를 이용하기 때문에 거의 모든곳에서 접속할 수 있습니다. 해당 환경을 만든 다음, WebDAV를 지원하는 iPad(iPhone)의 nPlayer 앱이나 Android의 DicePlayer 앱을 사용하여 구축해놓은 Synology NAS에 접속하여 정상적으로 영상을 즐깁니다.

위와 같이 사용하면 다음과 같은 문제점이 발생합니다. 
1) nPlayer의 DTS 라이센스 관련 업데이트로 인해 DTS 코덱이 들어간 영상은 소리가 나오지 않습니다. (AV Player 등 타 플레이어도 마찬가지)
2) 모바일 환경(3G, Wibro, LTE)에서 대역폭 이상의 높은 비트레이트의 파일을 재생할 경우 끊김이 발생할 확률이 높습니다. 통신망 환경이 좋지 못하면 더더욱 그렇습니다.

따라서, 두가지의 문제를 해결하려면 트랜스코딩(실시간 인코딩)이 가능해야 합니다. 첫번째 해결책은 iOS의 AirVideo 앱을 이용하는 것이고, 두번째 해결책은 Video Station을 이용하는 방법이 있습니다. iOS의 AirVideo를 써 본 결과, 컨테이터에 따라 자막까지 알아보기 힘든 화질 저하가 발생하는 영상들이 있었기에 해당 앱으로는 일찌감치 포기하였습니다. 안드로이드의 경우 Qloud Media가 있는것 같은데 써보지는 않았고요. 때문에, 마지막 카드인 Video Station에 집중하여 봤습니다.

Synology NAS에 들어간 Video Station은 트랜스코딩도 지원할 뿐더러, 방대한 양의 DB를 통해서 라이브러리를 정리해 주기도 합니다. 정말 좋은 App이죠. 다 좋은데 이놈의 문제점은 트랜스코딩 과정을 거치면서 Frame Rate가 반토막나서 영상을 집중하여 보기가 힘듭니다. 고민을 좀 하다가, 시놀로지 홈페이지에 패키지 파일이 올라온것을 캐치하여 한번 뜯어보았습니다. tar로 압축이 되어있었기 때문에, 의외로 쉽게 찾아 낼 수 있었습니다. 

이 과정에서 제가 목표했던것은 다음과 같습니다.
1) Frame Rate가 24프레임 이상 지원 되어야 할 것
2) 자막은 필수
3) 모바일 환경에서 통신망 환경에 따라 비트레이트 변경을 통해 끊김없는 감상이 가능해야 할 것.



자, 그럼 시작합니다.

1) Frame Rate가 24프레임 이상 지원 되어야 할 것
먼저, 패키지 관리자에서 Video Station을 설치하여 줍니다. (이미 설치되어있다면 패스) 
그 다음 시놀로지 관리패널 > 제어판 > 터미널로 들어가 SSH 서비스 활성화에 체크하여 줍니다. 

다음으로, 쉘을 이용해 root 계정으로 시놀로지에 접속합니다. 비밀번호는 관리패널의 admin 계정과 같습니다. 윈도우 사용자는 putty를 이용하세요.
MacBook-Pro:~ Ryun$ ssh root@192.168.0.100

그다음 VideoStation이 설치된 디렉토리로 접근합니다. 여기서 저의 경우 VideoStation이 volume1(볼륨1)에 설치되어있기 때문에 경로는  /volume1/@appstore/VideoStation/etc 로 나타납니다.
RyunBox> cd /volume1/@appstore/VideoStation/etc

그 다음 뭐가있는지 확인해보면, 
RyunBox> ls -l

drwxr-xr-x    2 root     root          4096 May  1 03:20 HDHomeRun_channelmap
drwxr-xr-x    2 root     root          4096 May  1 03:20 KernelFirmwares
drwxr-xr-x    2 root     root         20480 May  1 03:22 KernelModules
-rw-r--r--    1 root     root           189 Apr 12 16:18 SYNO.SDS.VideoStation.Application.legacy.conf
-rw-r--r--    1 root     root         37580 Apr 12 16:18 TransInfo_HLS
-rw-r--r--    1 root     root         41468 Apr 12 16:18 TransInfo_SS
-rw-r--r--    1 root     root          5034 May  1 04:17 TransProfile
-rw-r--r--    1 root     root            95 Apr 12 16:18 country
-rw-r--r--    1 root     root            31 Apr 12 16:18 default.conf
drwxr-xr-x    2 root     root          4096 May  1 03:20 index
-rw-r--r--    1 root     root           571 Apr 12 16:18 model
-rw-r--r--    1 root     root           740 Apr 12 16:18 modelmap
-rw-r--r--    1 root     root           865 Apr 12 16:18 plugin.conf
drwxr-xr-x   38 root     root          4096 May  1 03:20 synodvb_t
-rw-r--r--    1 root     root           262 Apr 12 16:18 videostation_port

여기서 트랜스코딩에 관여하는 설정이 들어간 파일은 3가지 정도 됩니다.  (모두 JSON String으로 되어있음)
-rw-r--r--    1 root     root         37580 Apr 12 16:18 TransInfo_HLS
-rw-r--r--    1 root     root         41468 Apr 12 16:18 TransInfo_SS
-rw-r--r--    1 root     root          5034 May  1 04:17 TransProfile

TransInfo_HLSTransInfo_SS는 원본파일의 컨테이너를 분류하기 위한 JSON String이 들어가있고, TransProfile은 그렇게 컨테이너별로 분류된 것에 따라 실제 ffmpeg에 넣어주는 Parameter에 대한 정보가 JSON String으로 들어있습니다. 분류는 VideoStation이 알아서 해 줄 것이므로, 따라서 우리는 TransProfile 파일만 고쳐주면 됩니다 :) 
(분류를 따로 해주고 싶으시다면 TransProfile을 참고하여 TransInfo_HLS TransInfo_HLS의 String을 변경해주시면 됩니다.)

그럼 vi에디터로 TransProfile 파일을 열어봅시다.
RyunBox> vi TransProfile
{
"mpegts_cga_x264_vb200_vr_aac_ab40": "-threads 0 -vcodec libx264 -vsync 2 -vprofile baseline -level 30 -s cga -b 200k -r 15 -acodec libfaac -ab 40k -ac 2 -f mpegts -mpegts_copyts 1",
....
...
(파일 내용이 조금 긴 관계로 맨 처음 줄만 가져오고 나머지는 생략합니다.)

여기서 Frame Rate를 담당하는 부분은 "-r" Parameter 입니다. 기본으로 15로 세팅되어 있는데, 이를 24이상으로 바꾸어 줍니다. 전 30으로 설정해 주었습니다. 이 부분은 NAS 성능에 따라 적당히 조절하여 주셔야 합니다. 참고로, 시중에 유통되는 DVD(NTSC PAL)의 Frame Rate는 23.976fps 입니다. 따라서 24fps 정도면 원활한 영상을 보실 수 있습니다.

"mpegts_cga_x264_vb200_vr_aac_ab40": "-threads 0 -vcodec libx264 -vsync 2 -vprofile baseline -level 30 -s cga -b 200k -r 30 -acodec libfaac -ab 40k -ac 2 -f mpegts -mpegts_copyts 1",

첫줄에 해당하는 것을 바꾸었으니, 다른 줄도 모두 바꾸어 줍니다. -r 값이 없는것들은 명시적으로 적어주시면 됩니다.
:wq! 명령어를 입력하여 저장하고 나와서 이제 DS Video+ 앱으로 트랜스코딩을 하면 자연스러운 영상이 재생되는걸 보실겁니다.
이렇게 3개의 조건 중, 1번 조건은 만족하였습니다.


2) 자막은 필수
두번째로, 자막이 나와야 합니다. 이 부분은 간단합니다. 보통 우리가 보는 영상에 같이 들어있는 대부분의 자막은 smi 확장자로 이루어져 있습니다. 하지만 Video Station에서는 srt 자막 파일만 지원하기에, 포털 사이트에서 smi to srt 변환 프로그램을 이용해서 smi 파일을 srt로 변환한 다음, 같은 폴더에 넣어주면 해결됩니다. 자막은 나중에 플레이 시작시 물어봅니다. (좋은건, 자막이 영상에 같이 인코딩되지 않음!)


3) 모바일 환경에서 통신망 환경에 따라 비트레이트 변경을 통해 끊김없는 감상이 가능해야 할 것.
마지막은 더이상 할게 없습니다. 720P영상들 중 1.4GB정도 되는 영상들은 영상 비트레이트가 1400~1600kbps 정도 됩니다. 원활한 3G 환경에서는 끊김없이 재생이 가능한데, 아시다시피 모바일 네트워크 환경은 Handover 구역이라던지, 늘 외부 요소에 의해 불안정 합니다. 따라서, 비트레이트를 조정할 방법이 있어야 합니다. 하지만 이 부분은 감사하게도 VideoStation에서 이미 지원하고 있습니다.

DS Video+ 앱의 옵션에 가보면 영상 품질을 높음, 중간, 낮음,자동 처럼 3~4단계로 분류하고 있는데, 원본은 말 그대로 원본 파일 자체를 플레이어에 넘겨주는 것이고(iOS에서 MP4 컨테이너 외 재생 불가), 나머지 옵션은 트랜스코딩 옵션을 켜야 작동합니다. 옵션 별 비트레이트는 아까 위에서 수정하였던 TransProfile 파일에 잘 들어가 있으며, 기본적으로 VideoStation에서는 해상도와 영상 컨테이너에 따라 200k~1500k 까지의 품질을 지원합니다. 만약 변경하고 싶으신분은 파일을 열어 "-b" Parameter를 수정하여 주시면 됩니다. 통신망 상태에 따라 화면이 끊길때 중간중간 옵션을 변경하면서 감상하시면 됩니다.


4) 마치며
이렇게해서 목표를 모두 달성했습니다. 대부분의 코덱에 관련없이 PC, iOS, Android에서 자막과 함께 부드러운 영상 재생이 가능하며, 모바일 환경을 감안하여 비트레이트를 조절해서 볼 수 있습니다. 개인적으로는 VideoStation의 라이브러리 기능까지 더 해지니, 어떤 Application보다 더 좋은 스트리밍 환경을 구축했다고 봅니다.


ps. TransProfile파일은 VideoStation 업데이트마다 매번 수정해주어야 할 것 같아 보입니다.
ps2. smi 파일을 srt로 변환하는 스크립트를 이미 포고플러그에 적용중인 사람들이 있는것 같으니, 변환 프로그램이 불편하다면 직접 시놀로지에 적용시켜보는것도 좋을듯 하네요.
ps3. Android에서 제조사 기본 동영상 플레이어에 따라 자막이 안나올수도 있으니, 그렇다면 DicePlayer를 이용하시는것도 괜찮습니다.

 
짧은글 일수록 신중하게.
witniss 2013-05
와 자세한 설명 감사드립니다.
ghostman 2013-05
귀한정보 감사합니다.
이슬사랑75 2013-05
감사합니다. 성공했읍니다.
한륜희 2013-05
원본 동영상 컨테이너가 MP4일경우, DS Video+ 앱에서 [트랜스코딩: on, 품질: 고품질]로 놓으면 트랜스코딩을 하지 않고 원본을 넘겨줍니다. 참고하세요.
박남규 2013-05
대단합니다...
정말 좋은 정보군요...
강동윤 2013-05
매우 소중한 정보 감사합니다...
JK 2013-05
대단한 정보 감사합니다.
박명근TN 2013-05
이것저것 다 귀찮으신 분들은 무선랜 공유기 달린 일반적인 PC의 윈도상에서 Qloud Server 사용하시면 됩니다. 클라이언트는 안드로이드용 Qloud Media인가 할겁니다. QiSS라 불리고 중국애들이 만든 것 같습니다. 휴대폰이 풀HD가 재생이 안되도 클라이언트쪽에서 비트레이트를 조절해 재생이 가능하며 동일 폴더의 자막도 지원되는 에어비디오 유사한 프로그램입니다. 진저브레드에서도 잘되더군요.

https://sites.google.com/a/qiss.mobi/qiss/products_free/qme/qloud-video/qvideo_server
이석훈 2013-05
30으로 바꾸고 720p-han릴 돌리는데 i3임에도 시퓨사용률 95%까지 올라가네요..
     
한륜희 2013-05
전 60-70%정도 니오네요. 원본 동영상에 따라 좀 다를겁니다.
witniss 2013-05
ds photo에서 동영상 감상시도 끊기는 부분을
위와같이 적용해도 될까요???
성승호 2013-05
잘되서 좋기는 한데 이걸 적용한 뒤 부터는 꼭 그런지는 증거가 없지만 비디오스테이션에서 전체화면보기가 활성화가 않됩니다. 어떻게 해도 않되네요 재설치 해도 안되고 원래 그런 것인 가요?
hidnbox 2013-12
좋은 팁 감사합니다.
저도 스트리밍이 고민이였는데 24정도로 한번 해봐야 겠네요.
혹시나 해서 글 남깁니다..
시놀로지 비디오 스테이션용 DTS 코덱쪽은
아래 링크에서 SPK 파일을 받으셔서 수동설치로 하시면 됩니다^^
http://blog.mowd.tw/index.php?pl=1052

안드로이드에서 DTS 코덱 재생의 경우
DicePlayer을 설치 한 다음... 아래 링크에 접속해 파일을 받아
http://diceplayer.inisoft.co.kr/technical-note

압축 해제후 폴더 하부의 libffmpeg.so 파일을
/sdcard/libffmpeg.so 에 복사한 다음에 Diceplayer 설정에서 커스텀 플러그인 옵션을 활성화 시켜주시면 됩니다.
죠슈아 2015-07
+




NAS
제목Page 177/180
2014-04   2507679   회원K
2014-05   2808038   정은준1
2013-05   8993   야생마
2013-05   15835   박일규군
2013-05   7192   siny
2013-05   10740   자유청년
2013-05   8665   성기사
2013-05   17085   우야노
2013-05   13018   우야노
2013-05   24399   박남규
2013-05   23993   DrDavid
2013-05   24112   박건태
2013-05   13067   송강민
2013-05   21732   안형곤
2013-05   25662   똥파리
2013-05   27301   정은준1
2013-05   19007   JFK4
2013-05   46100   박남규
2013-05   33077   sensekuh
2013-05   20630   프리즘볼
2013-05   55810   Ryun
2013-05   12368   f100mania