QNAP TS-464でJellyfinを動かす場合のハードウェアアクセラレーション設定

投稿者: | 8月 3, 2025

突如Jellyfinラブになってしまった。ほんとメディア管理の決定版。さらにパソコン、iPhone、Apple TVなんでもござれ。

 

閑話休題

 

Jellyfinのハードウェアアクセラレーションの設定はどれがサポートされているのか明確には見つからなかったので調べてみた。

調べる方法は、SSHでQNAPにログインをして、以下を実行

/share/CACHEDEV1_DATA/.qpkg/jellyfin/jellyfin-ffmpeg/vainfo

出力結果

Trying display: drm
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo2: VA-API version: 1.22 (libva 2.22.0)
vainfo2: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.2.1 (92159c3)
vainfo2: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSliceLP
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSliceLP
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointEncSliceLP
VAProfileVP9Profile1 : VAEntrypointVLD
VAProfileVP9Profile1 : VAEntrypointEncSliceLP
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointEncSliceLP
VAProfileVP9Profile3 : VAEntrypointVLD
VAProfileVP9Profile3 : VAEntrypointEncSliceLP
VAProfileHEVCMain422_10 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointVLD
VAProfileHEVCMain444 : VAEntrypointEncSliceLP
VAProfileHEVCMain444_10 : VAEntrypointVLD
VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP

[admin@ts464 jellyfin]# ls /dev/dri/renderD128

/dev/dri/renderD128

 

どの設定がいいのかそれでもわからなかったので、AIに聞いて得られた結果はこちら。

Hardware accelatation は、VAAPIにしておく。デバイス名は、/dev/dri/denderD128 (デフォルトで指定されている。)

ENable Hardware decoding forは、AV1とHEVC Rext 12bit以外オン

Hardware encoding optionsは、全部オン

 

ここで取り上げたGPUの設定は、対象がMP4でDirect Playができる環境だとGPUは使われない。

検証するならば、mkvファイルなどを使って検証するしかない。

検証方法

わざとGPUが使われるテストファイルをffmpgで作成

結構時間がかかるので小さいファイルを利用したほうがいい。

ffmpeg -i sample.mp4 \
-c:v libaom-av1 -crf 35 -b:v 0 \
-c:a libopus \
-t 30 \
  AV1_Opus.mkv

MacのSafariで再生。以下のようなログが表示され、GPUが使われたことが確認できた。それも省電力モードで再生できている。

[2025-08-02 00:06:11.472 +09:00] [INF] [21] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: “/usr/lib/jellyfin-ffmpeg/ffmpeg” “-analyzeduration 200M -probesize 1G -f matroska,webm -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -i file:”/Movie/English/00Sample/AV1_Opus.mkv” -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 hevc_vaapi -tag:v:0 hvc1 -low_power 1 -rc_mode VBR -b:v 1954760 -maxrate 1954760 -bufsize 3909520 -profile:v:0 main -level 150 -sei -a53_cc -force_key_frames:0 “expr:gte(t,n_forced3)” -vf “setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw,iha),min(320,180a))/2)2:trunc(min(max(iw/a,ih),min(320/a,180))/2)2,format=nv12,hwupload_vaapi” -codec:a:0 copy -strict -2 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename “6086bf6a5b11588887f4935104f01e82-1.mp4” -start_number 0 -hls_segment_filename “/cache/transcodes/6086bf6a5b11588887f4935104f01e82%d.mp4” -hls_playlist_type vod -hls_list_size 0 -y “/cache/transcodes/6086bf6a5b11588887f4935104f01e82.m3u8″”

これで大丈夫そう。普通に再生できている。

GPUが使われやすいのは、DVDのISOイメージなのではないかと思われる。(Jellyfinは、DVDのISOイメージも認識して再生できる。)逆にいうとmp4ファイルだけしか持っていおらず、でクライアントがiPhone/iPadだとDirect Playを使われるので、GPUは使われないし、アクセラレーションの設定もいらないかもしれない。

カテゴリー: 未分類

コメントを残す