jellyfin docker部署
docker安装
sudo docker run -d \
--privileged \
--name=jellyfin \
--volume /opt/1panel/apps/jellyfin/config:/config \
--volume /media/devmon/新加卷/jellyfin/cache:/cache \
--volume /media/devmon/新加卷/media:/media \
--volume /media/devmon/新加卷/jellyfin/fonts:/usr/share/fonts/truetype/dejavu \
--user root \
--publish 8096:8096 \
--publish 8920:8920 \
--restart=unless-stopped \
--device /dev/dri:/dev/dri \
--device /dev/dma_heap:/dev/dma_heap \
--device /dev/mali0:/dev/mali0 \
--device /dev/rga:/dev/rga \
--device /dev/mpp_service:/dev/mpp_service \
$(for dev in dma_heap mali0 iep mpp-service vpu_service vpu-service \
hevc_service hevc-service rkvdec rkvenc vepu h265e; do \
[ -e "/dev/$dev" ] && echo "--device=/dev/$dev"; \
done) \
jellyfin/jellyfin
将设备映射到 Docker 容器
设备名称 | 说明 | 用途 |
---|---|---|
/dev/dri |
Direct Rendering Interface,提供 GPU 的直接渲染接口。 | GPU 硬件加速,常用于 VA-API 或 DRM 驱动的图形渲染和视频解码。 |
/dev/dma_heap |
动态内存分配堆,常用于视频帧缓冲区等内存密集型操作。 | 帧缓冲区管理、共享内存等。 |
/dev/mali0 |
Mali GPU 设备接口(用于 ARM Mali 系列 GPU)。 | 图形处理、OpenCL 加速。 |
/dev/rga |
Rockchip 的 RGA(Raster Graphic Acceleration)硬件加速器。 | 图像缩放、旋转、颜色空间转换等操作。 |
/dev/mpp_service |
Media Process Platform (MPP) 的主要控制接口。 | 用于硬件视频编解码服务。 |
这些设备用于 GPU 和 VPU 的硬件加速,Jellyfin 在使用 FFmpeg 处理视频时会利用它们
jellyfin容器内置ffmpeg
FFmpeg硬件设备初始化
/usr/lib/jellyfin-ffmpeg/ffmpeg -v debug -init_hw_device rkmpp=rk -init_hw_device opencl=ocl@rk
ffmpeg version 7.0.2-Jellyfin Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=arm64 --cross-prefix=/usr/bin/aarch64-linux-gnu- --toolchain=hardened --enable-cross-compile --enable-rkmpp --enable-rkrga
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'rkmpp=rk'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'opencl=ocl@rk'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument debug.
Applying option init_hw_device (initialise hardware device) with argument rkmpp=rk.
Applying option init_hw_device (initialise hardware device) with argument opencl=ocl@rk.
arm_release_ver: g13p0-01eac0, rk_so_ver: 10
[AVHWDeviceContext @ 0x559de810d0] 1 OpenCL platforms found.
[AVHWDeviceContext @ 0x559de810d0] 1 OpenCL devices found on platform "ARM Platform".
[AVHWDeviceContext @ 0x559de810d0] 0.0: ARM Platform / Mali-G610 r0p0
[AVHWDeviceContext @ 0x559de810d0] cl_arm_import_memory found as platform extension.
[AVHWDeviceContext @ 0x559de810d0] cl_khr_image2d_from_buffer found as platform extension.
[AVHWDeviceContext @ 0x559de810d0] DRM to OpenCL mapping on ARM function found (clImportMemoryARM).
Successfully parsed a group of options.
Universal media converter
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'