½Ã³î·ÎÁö Jellyfin H/W Æ®·£½ºÄÚµù ±îÁö 1ºÐ ¿Ï¼º °¡À̵å
https://raw.githubusercontent.com/PeterSuh-Q3/tinycore-redpill/main/j¡¦ (278)https://github.com/PeterSuh-Q3/tinycore-redpill/blob/main/jellyfin-ig¡¦ (301)
Jellyfin 에 트랜스코딩 OpenCL (톤매핑) 을 활성화 하지 못해서 만 하루를 소요했습니다.
구글링을 엄청 많이 한것 같네요.
결국 솔루션을 찾았습니다.
상세한 가이드는 기존에 서버포럼 달소님 가이드 한번 미리 보시는것도 좋을것 같습니다.
https://svrforum.com/nas/1668940
저는 인텔 iGPU opencl 트랜스코딩까지 활성화 하도록한 도커 초간단 설치 방법을 알려 드리겠습니다.
시놀로지에 도커 (컨테이너 매니저) 만 준비 되어 있으시면 됩니다.
DSM 버전은 7.2.2 에서 시험했습니다.
1. 먼저 ssh 로 접속하셔서 아래처럼 커맨드해서 jellyfin 전용 ffmpeg 를 설치해 주시면 됩니다.
인텔 iGPU H/W 트랜스코딩에 필수 프로그램 입니다.
sudo -i
bash -c "$(curl https://raw.githubusercontent.com/PeterSuh-Q3/tinycore-redpill/main/jelly.sh)"
이 스크립트의 내용은 참고만 하시라고 여기 적겠습니다.
#!bin/sh
mkdir -p /volume1/docker/jellyfin/config
mkdir -p /volume1
/docker/jellyfin/cache
curl -kLO# https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v6.0.1-8/jellyfin-ffmpeg6_6.0.1-8-bookworm_amd64.deb
dpkg-deb -x jellyfin-ffmpeg*.deb temp_dir
mkdir -p /usr/lib/jellyfin-ffmpeg
mv -v temp_dir/usr/lib/jellyfin-ffmpeg/ /usr/lib/
cd /usr/lib/jellyfin-ffmpeg
./ffmpeg
복사
ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 14.1.0 (crosstool-NG 1.26.0.93_a87bf7f)
복사
2. 달소님 가이드 중간에 나오는 도커 (컨테이너 매니저) 상의 프로젝트를 바로 생성합니다.
도커 프로젝트 생성에 필요한 yaml 은 이 링크 파일을 다운받으셔서 사용하셔도 좋고
이 내용을 긁어서 카피해서 붙여 넣으셔도 무방합니다.
https://github.com/PeterSuh-Q3/tinycore-redpill/blob/main/jellyfin-igpu.yaml
트랜스코딩의 Intel opencl 을 활성화 하는 옵션은
환경변수중 하나에 자동추가되는 아래 값입니다. 이것 찾는데 꼬박 하루가 걸렸네요.
version: '3.x'
services:
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin-igpu
environment:
- UID=1026
- GID=100
- TZ=Asia/Seoul
- DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel
network_mode: 'host'
ports:
- 8096:8096
volumes:
- ./config:/config
- ./cache:/cache
- /volume1/_DRAMA:/volume1/_DRAMA
- /usr/lib/jellyfin-ffmpeg:/ffmpeg
devices:
- "/dev/dri/card0:/dev/dri/card0"
- "/dev/dri/renderD128:/dev/dri/renderD128"
privileged: true
restart: always
복사
볼륨 설정중
/volume1/_DRAMA:/volume1/_DRAMA
는 본인의 영화 공유폴더 상황에 맞게 적절히 수정해서 사용하시기 바랍니다.
3. jellyfin 대시보드 트랜스코딩 활성
홈에서 3선설정메뉴->대시보드->재생->트랜스코딩에서 Vaapi 또는 QSV는 아래처럼 AV1을 제외한 모든항목을 활성화 하시되
이 캡쳐처럼 저전력 모드는 건들지 마시기 바랍니다. 바로 오류로 빠지고 재생이 처음부터 중단합니다.
그리고 HDR 소스의 톤매핑 처리까지 사용하시려면 아래처럼 VPP 톤매핑을 활성화 체크해 주십시요.
Intel OpenCL 톤매핑이 자꾸 풀리는 현상이 확인되었습니다.
OpenCL 톤매핑 보다는 (Vaapi 또는 QSV) + VPP 톤매핑을 권장드립니다.
단 QSV 는 인텔5세대 이후부터 사용가능합니다.
4. 트랜스 코딩 테스트는 영상하나 재생하시고 바퀴모양 설정에서
1080p 해상도 기준으로 했을때 720p 나 480p 정도로 저해상도로 퀄리티를 떨어 뜨리시고
트랜스코딩이 잘되는지는 바퀴모양 설정에서 [재생데이터] 옵션을 선택해 주시면 영화 좌상부에 상세 내용이 아래처럼 표시됩니다.
트랜스코딩이란 글자가 확인되시면 시놀로지의 CPU 부하량을 확인해 보시기 바랍니다.
적절히 낮은 부하량을 잘 유지하고 있으면 성공입니다.
n100 ¹Ì´ÏPC »ç¸é ¼³Ä¡ÇØ ºÁ¾ß °Ú³×¿ä
Àú°Ç ÇöÁ¦ »ç¿ëÁßÀÎ ÄÄÀÇ ±×·¡ÇÈ ¼¼´ë¸¦ È®ÀÎÈÄ °Å±â ¸ÂÃß¾î¼ Áö¿øÇÏ´Â ÄÚµ¦¸¸ üũÇØ¾ß ÇÕ´Ï´Ù
alderÀÌ»ó ¾²½Å´Ù¸é ´Ù µÇ°ÚÁö¸¸ ƯÈ÷ AV1Àº ±¸Çü¿¡¼ 100% ¾È µÇ´Â ÄÚµ¦ÀÔ´Ï´Ù
~½ºÄ«ÀÌ (Ä«ºñ?)¶ó¸é 10bitµµ Áö¿øÇÏ´ÂÁö üũÈÄ Çغ¸¼¼¿ä
Àú ÆÐÅ°Áö ½ÃÇèÇغ¸´Âµ¥ deb ÇØÁ¦ÈÄ ¹ÙÀ̳ʸ®¸¦ ½ÇÇàÇϸé libOpenCL.so.1 ¾ø´Ù°í ¶°¹ö¸®³×¿ä (ÇØ´ç ÆÐÅ°Áö¿¡´Â ÀÌ ¶óÀ̺귯¸® Æ÷ÇÔ ¾È µÊ)
Àú ¶óÀ̺귯¸®´Â ocl-icd-libopencl1¿¡ µé¾îÀÖ°í, Àú°É ÃæÁ·Çϸé libopenmpt.so.0°¡ ÇÊ¿äÇÏ´Ù°í ³ª¿É´Ï´Ù
-------------------------------------------------
deb¸¦ ¹Þ´Â°Ô ¾Æ´Ï¶ó jellyfin-ffmpeg_6.0.1-8_portable_linux64-gpl.tar.xz¸¦ ¹ÞÀºÈÄ ¾ÐÃà Ç®¾î¼ ÇÏ´Ï ½ÇÇà µË´Ï´Ù
Á¤Àû ¹ÙÀ̳ʸ®´Ùº¸´Ï ÀÇÁ¸¼º ¾È µûÁ®¼ ÀÌÂÊÀÌ ³ªÀ»²¨°°½À´Ï´Ù
https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v6.0.1-8/jellyfin-ffmpeg_6.0.1-8_portable_linux64-gpl.tar.xz
mkdir -p /usr/local/jellyfin-ffmpeg
tar xvf jellyfin-ffmpeg_6.0.1-8_portable_linux64-gpl.tar.xz
mv ffmpeg /usr/local/jellyfin-ffmpeg/
mv ffprobe /usr/local/jellyfin-ffmpeg/
chmod +x /usr/local/jellyfin-ffmpeg/ffmpeg
chmod +x /usr/local/jellyfin-ffmpeg/ffprobe
ÀÌ·¸°Ô ÁøÇàÇß½À´Ï´Ù (Á¦°æ¿ì °æ·Î¸¦ /usr/local/jellyfin-ffmpeg·Î Àâ¾Ò½À´Ï´Ù
´Ù¸¸ Docker°¡ ¾Æ´Ñ DSM ÆÐÅ°ÁöÆÇÀ̶ó ±×·±Áö ȣȯ¼º ¹®Á¦ ÀÏÀ¸Å°³×¿ä
[hwupload @ 0x561982441600] A hardware device reference is required to upload frames to.
[Parsed_hwupload_3 @ 0x561982b629c0] Query format failed for 'Parsed_hwupload_3': Invalid argument
¶ó°í ¶°¹ö¸®³×¿ä (QSV, VAAPI ¾çÂÊ µ¿ÀÏ)
Àú°Å ±ÇÇÑ ¿¡·¯¿´´ø°É·Î ±â¾ïÇϴµ¥, ssh¿¡¼ root°èÁ¤À¸·Î ½ÇÇàÇصµ ¶È°°ÀÌ ¶ß´Â°Åº¸¸é ´Ù¸¥°É µÚÁ®ºÁ¾ßÇÒ²¨°°³×¿ä
BIN¸¸ ÀÖ´Â Æ÷ÅÍºí ¹öÀüµµ Àû¿ëÇØ ºÃ´Âµ¥, OpenCLÀº ¸¶Âù°¡Áö·Î ¹®Á¦°¡ ÀÖ´Ù°í ³ª¿À½Ç°Ì´Ï´Ù.
DOCKER_MODS:linuxserver/mods:jellyfin-opencl-intel ȯ°æº¯¼ö Ãß°¡ºÎºÐÀÌ OpenCL À» ´ë½Å Ä¿¹ö ÇÕ´Ï´Ù.
https://github.com/linuxserver/docker-mods/blob/jellyfin-opencl-intel/README.md
ÀÌ MODS °¡ ¾Ë¾Æ¼ ´Ù ÄÁÆ®·ÑÀ» ÇÕ´Ï´Ù.
°ñÄ¡¾ÆÇÁ°Ô ¾Ö½á ãÀ¸½Ç ÇÊ¿ä ¾øÀ»°Í °°½À´Ï´Ù.
Àú´Â ÀÇÁ¸¼º ã¾Æ°¡¸ç ¶óÀ̺귯¸®¸¦ ¿ìºÐÅõ¿¡ ±ò¾Æ°¡¸é¼ ´Ù ä¿öºÃ´Âµ¥, °á±¹Àº ¸·È÷´Â ºÎºÐÀÌ »ý°Ü¼ ´õ ÁøÇàÀ» ¸øÇß½À´Ï´Ù.
ÀÌ À§Ä¡¿¡ 10°³³Ñ´Â OpenCL°ú ÀÇÁ¸¼º ÀÖ´Â Lib ¸¦ ¸ðÀ¸´Ù ±×¸¸ µÎ¾ú½À´Ï´Ù.
https://github.com/PeterSuh-Q3/tinycore-redpill/tree/main/opencl
Ä¿³Î 4.X ºÎÅÍ ÀÎÅÚÀÌ OpenCL Áö¿øÀ» Áß´ÜÇß´Ù´Â ¾ê±âµµ ÀÖ±¸¿ä.
¿ìºÐÅõ´Â ½±°Ô ¼³Ä¡°¡ µÇ´Âµ¥, ½Ã³î·ÎÁö´Â ±×·¸Áö ¸øÇÑ ºÎºÐµµ ÀÖ½À´Ï´Ù.
Æ÷ÅÍºí ¹öÀüÀº ÀÏ´Ü ÀÇÁ¸¼º ¿¡·¯´Â ¾È ³µ½À´Ï´Ù (´Ù¸¸ DSM¿ë jellyfinÀ¸·Î Æ®·£½ºÄÚµù ½ÃÅ°´Ï Àú·± ¿¡·¯¸¦ ³¾ »Ó)
ÇöÁ¦ DSM¿ë jellyfin°æ¿ì jellyfin ffmpeg¸¸ÀÌ ¾Æ´Ï¶ó ½Ã³î¿ë ffmpeg ÆÐÅ°Áö¶û ȣȯ¼ºµµ Á» ¹®Á¦°¡ ÀÖ½À´Ï´Ù (ÀÎÄÚµù ÆĶó¸ÞÅ͸¦ Á» º¯°æÇØ¾ß Á¦´ë·Î ó¸®ÇÒ²¨°°Àºµ¥ ±×·²·Á¸é ÄÄÆÄÀÏ È¯°æ ÁغñÇÏ°í, ¼Ò½º ¹Þ¾Æ¼ ¼öÁ¤ÈÄ »õ·Î ÄÄÆÄÀÏÇؾßÇؼ ±ÍÂú¾Æ¼ ¼Õ ¾È µÇ¾ú½À´Ï´Ù)
ÀÇÁ¸¼ºÀÚþ ¿ìºÐÅõÀÇ ÆÐÅ°Áö ÃßÀûÇؼ ÇϳªÇϳª ¸Þ²Ù¸é µÇ±äÇϴµ¥ (¾Èµå·ÎÀ̵忡¼ ´Ù¸¥ ¸®´ª½º À¯Æ÷ÆÇ¿ë ¹ÙÀ̳ʸ® µ¹·Á¼ gcc ¿Ã¸®´À¶ó »ðÁú Á» ÇÑÀû ÀÖÀ½), »ó´çÇÑ ³ë°¡´ÙÀÔ´Ï´Ù
QSV(ÀÎÅÚ5¼¼´ëÀÌ»ó) + VPP Åæ¸ÅÇÎ ¶Ç´Â VAAPI + VPP Åæ¸ÅÇÎÀ¸·Î °¡ÀÌµå ³»¿ëÀ» ¼öÁ¤Çß½À´Ï´Ù.
OpenCL Åæ¸ÅÇÎÀº ¼³Á¤µµ ±î´Ù·Ó°í µµÄ¿ MOD°¡ ÀÚ²Ù Ç®¸®´Â Çö»óÀÌ È®ÀεǾú½À´Ï´Ù.
OpenCL ´ë½Å VPP Åæ¸ÅÇÎÀ¸·Îµµ ÃæºÐÈ÷ ±ú²ýÇÑ ÈÁúÀÌ Àß ³ª¿À³×¿ä.
Àú°É ÇØ°áÇÒ·Á¸é ºÎÆ®·Î´õ¸¦ ¼Õ ºÁ¾ß°ÚÁÒ (ÀÌ¹Ì SA6400¿ëÀº Æß µé¾îÀִ°Ű°´øµ¥ ¾È µÇ´ø°¡¿ä?)