(2018/3/15 수정: 이치로님의 문서에 이 글의 링크가 연결되어 있어서인지 지속적으로 이 글을 참고하여
vaapi 설정하시는 분이 많으신 것 같네요. 이전에 작성했을때와 변경된 내용이 있어 일부 수정했습니다.)
tvheadend 패키지는 이치로님이 배포하신 docker 이미지의 vaapilatest 버전 이용했습니다.
(3/15 수정: 이치로님 tvheadend의 최근 배포에는 latest 버전에서 vaapi를 지원합니다.
따라서 latest를 받아서 쓰시면 됩니다)
(https://registry.hub.docker.com/u/wiserain/tvheadend/)
vaapi 이용을 위해서는 host os의 /dev/dri 디바이스를 docker container내의 /dev/dri로
매핑해 줘야 되는데, 시놀로지 DSM의 docker web ui에는 볼륨 매핑만 해 줄 수 있고,
디바이스 매핑은 할 수가 없습니다.
그래서 터미널로 접속해서 docker run 명령으로 container를 실행시켜 봤습니다.
매뉴얼에 나와 있는 docker 명령어에 --device "/dev/dri:/dev/dri" 옵션만 추가로 줬습니다.
저의 경우에는 다음과 같은 docker 명령어로 container를 실행시켰습니다.
# docker run -d \
--name=wiserain-tvheadend-vaapi \
--network=host \
-v "/volume1/docker/tvh-epg2xml:/epg2xml" \
-v "/volume1/docker/tvh-config:/config" \
-v "/volume1/docker/tvh-recordings:/recordings" \
--device "/dev/dri:/dev/dri" \
-e PUID=0 -e PGID=0 -e TZ=Asia/Seoul \
wiserain/tvheadend:vaapilatest
그랬더니, docker 내부에서 /dev/dri 디바이스가 확인 가능해 집니다.
# docker exec wiserain-tvheadend-vaapi ls -l /dev/dri
total 0
crw-rw---- 1 root 65536 226, 0 Jan 3 17:55 card0
crw-rw---- 1 root 65536 226, 64 Jan 3 17:55 controlD64
crw-rw---- 1 root 65536 226, 128 Jan 3 17:55 renderD128
신기한건, 이렇게 docker 명령어로 container를 만들어도 DSM의 dockerUI에 이 container가
나타난 다는 겁니다.
아래의 wiserain-tvheadend-vaapi 컨테이너가 터미널 명령어로 생성한 것인데, 이렇게 만들어주고 난
후에는 web ui에서 stop/start를 해도 디바이스 매핑한 정보가 날아가지 않고 유지된다는 점입니다.
(즉 터미널은 처음 한번만 들어가 주면 됩니다. 이후엔 web에서 관리 가능)
Codec Profile 설정 화면에서 add를 해 보면 vaapi 관련된 codec이 4가지가 보이는데요,
이 중 vp9, vp8은 동작하지 않고, hevc(h.265), h.264만 동작합니다.
시놀로지 홈페이지에서 확인해 보니, 918+가 지원하는 하드웨어 트랜스코딩 코덱이 이 2가지인 모양이네요.
아무튼.. hevc_vaapi와 h264_vaapi 코덱을 추가하고 테스트를 해 보았습니다.
다음과 같이 profile을 만들어서 테스트해 보았습니다.
720p로 잘 트랜스코딩 되어서 플레이 되네요.
bitrate를 2500kb/s으로 한 이유는 제가 쓰는 LTE 요금제가 일정량 사용 이후에 3Mbps로 속도제한 되는 요금제라서 그랬습니다.
실제 속도 제한이 되었을때도 원활한 플레이가 되는지는 아직 확인 못해봤지만요..
VAAPI를 사용하지 않는 720p 트랜스코딩 때 CPU가 거의 350~380%까지 사용되었었는데요 (core 4개를 거의 다 썼다는 얘기죠)
VAAPI를 사용하지 CPU를 25% 가량 밖에 사용하지 않습니다. 트랜스코딩 때문에 NAS가 힘들어 하는 일은 없겠네요..
앞의 글에서 저와 같은 고민을 하고 계신 분을 보아서 좀 자세하게 적어보았습니다.
긴 글 읽어주셔서 감사합니다.
야구를 tvheadend로 보진 않아요 ^^
주로 드라마나 예능 등등 프로들 제시간에 보기 어려워서, 녹화해 놓고 보는 용도로 쓰고 있네요.
414j가 고장나는 바람에 큰 맘 먹고 918+로 올라왔는데, 완전 신세계네요 ㅋㅋ
이치로 님이 주신 정보가 많은 도움이 되고 있답니다.^^
916은 설치하면 랜인식이 안되덴데 ㅜㅜ
하긴.. 될거 같긴 한데..
아무리 검색해도 이전에 성공하신 분의 사례를 찾기가 어렵더군요.
부럽습니다.
완전 초보라 죄송합니다
docker: Error response from daemon: linux runtime spec devices: error gathering device information while adding custom device "/dev/dri": lstat /dev/dri: no such file or directory.
Configuration>Channel/EPG>EPG Grabber Module이 나타나지 않네요
Configuration>general 에서 유저 인터페이스 레벨을 전문가로 바꾸고 저장한 다음에 다시 메뉴 누르면 Channel/EPG>EPG Grabber Module 탭이 생긴다는 내용이 있어 사용해 보았는 변함없이 표시되지 않네요
혹시 로그인을 안해도 이런 현상이 나타나나요 ?
DSM id/password로는 로그인이 안되더라구요.
이제 좀 부담없이 즐길수 있겠네요 ㅎㅎ
감사합니다.
어떻게 설정을 해야 720으로 스트리밍이 되는건가요?
그냥 codec profile만 등록한다고 되는건 아닌것 같은데?
불가하다면 stable>latest 로 간단하게 마이그레이션 가능한 방법이 있나요? 아니면 다 날리고 latest로 다시 설치해야 하는데..