如何在 CPU 为 3865U 的小主机上启用 Jellyfin 的硬解功能

2024 年 12 月 26 日
 ZGeek

如题:硬件总是报遇到致命错误 docker 镜像为:nyanmisaka/jellyfin:lastest ffmpeg 的报错日志为:

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -f matroska -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -noautorotate -i file:"/media/nas/电影/哈利波特/哈利波特 2:消失的密室 BD 国英双语中英双字.mkv" -noautoscale -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 av1_qsv -preset veryfast -b:v 400000 -maxrate 400000 -bufsize 800000 -profile:v:0 main -level 53 -g:v:0 96 -keyint_min:v:0 96 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale_vaapi=w=960:h=540:format=nv12:extra_hw_frames=24,hwmap=derive_device=qsv,format=qsv" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -af "volume=2" -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 4 -hls_segment_type fmp4 -hls_fmp4_init_filename "77f37e1baa54d62016d7552ac7f4f091-1.mp4" -start_number 0 -hls_segment_filename "/cache/transcodes/77f37e1baa54d62016d7552ac7f4f091%d.mp4" -hls_playlist_type vod -hls_list_size 0 -y "/cache/transcodes/77f37e1baa54d62016d7552ac7f4f091.m3u8"


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=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  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
DRM_IOCTL_VERSION, unsupported drm device by media driver: vmwg
DRM_IOCTL_VERSION, unsupported drm device by media driver: vmwg
[AVHWDeviceContext @ 0x55a71d72f280] libva: /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so init failed
[AVHWDeviceContext @ 0x55a71d72f280] Failed to initialise VAAPI connection: 18 (invalid parameter).
Device creation failed: -5.
Failed to set value 'vaapi=va:/dev/dri/renderD128,driver=iHD' for option 'init_hw_device': Input/output error
Error parsing global options: Input/output error
2670 次点击
所在节点    NAS
14 条回复
colincat
2024 年 12 月 26 日
别折腾了 哈哈
ZGeek
2024 年 12 月 26 日
@colincat 怎么了
A3m0n
2024 年 12 月 26 日
启动容器的时候需要把显卡设备传进去。

例如:/dev/dri/renderD128
ZGeek
2024 年 12 月 26 日
@A3m0n 传进去了的
qiaoqiao1235
2024 年 12 月 26 日
要在外面给权限
chmod 777 /dev/dri/renderD128
我用 plex 是可以的
colincat
2024 年 12 月 26 日
@ZGeek 没啥意思。
Suaxi
2024 年 12 月 26 日
docker-compose.yml 或者 docker run 命令里加上 root 权限试试

privileged: true
Panameragt
2024 年 12 月 26 日
以前折腾过很久,成功后感觉真没啥意思
fish3125
2024 年 12 月 26 日
我觉得还蛮有用的,硬解在看一些不得不转码的视频 cpu 占用很低。
- 进容器 ls /dev/dri 看看文件是否正确传进去。
日记里似乎有 qsv ,硬解先选择兼容性好的 vaapi 试试,而非 qsv 。
wannianma
2024 年 12 月 27 日
别折腾了,买个极空间,所有问题都搞定。
cslive
2024 年 12 月 27 日
裸机系统还是 pve ,如果是 pve 还得核显直通
yanxin1111
2024 年 12 月 27 日
doveyoung
2024 年 12 月 27 日
我启用硬解后体验了两天,然后关闭了硬解,配置太差性能跟不上,客户端解的时候播放更流畅。
如果有不支持的编码,那就放弃这个编码的资源。
kakki
2024 年 12 月 27 日
最后选择用 PR 直接转换格式。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1100467

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX