Yesterday, 09:06 PM
Hi, I have installed Jellyfin recently, with server running within a Home Assistant OS (on a raspberry pi 4) and Jellyfin Android TV app on Nvidia Shield Pro as a client.
I have ripped my Blu Rays using MakeMKV and removed unnecessary tracks (such as audio and subtitles in languages I won't use) using MKVToolNix (and maybe that's the part where I messed something up?).
Now, the problem is that for some reason one file (Minecraft) is being transcoded, while another isn't (Solo) - even though they use the same container (MKV) and codecs (h.265 for video and AC3 for audio).
I'd like to get help in finding out why the transcoding is happening, since my intention for the server was basically to "serve files", and transcoding uses some resources and worsens UX on the client (almost instant play and seeking for Solo, and almost a minute of black screen for Minecraft while waiting for the transcoding).
I have attached transcode log and device capabilities log, along with screenshot from VLC showing files metadata (The one on the left is Solo, which plays normally; the one on the right is Minecraft, which is transcoded)
And here is part of the server log where I'm trying to play Minecraft (which triggers transcoding) and forward the video a little.
I have ripped my Blu Rays using MakeMKV and removed unnecessary tracks (such as audio and subtitles in languages I won't use) using MKVToolNix (and maybe that's the part where I messed something up?).
Now, the problem is that for some reason one file (Minecraft) is being transcoded, while another isn't (Solo) - even though they use the same container (MKV) and codecs (h.265 for video and AC3 for audio).
I'd like to get help in finding out why the transcoding is happening, since my intention for the server was basically to "serve files", and transcoding uses some resources and worsens UX on the client (almost instant play and seeking for Solo, and almost a minute of black screen for Minecraft while waiting for the transcoding).
I have attached transcode log and device capabilities log, along with screenshot from VLC showing files metadata (The one on the left is Solo, which plays normally; the one on the right is Minecraft, which is transcoded)
And here is part of the server log where I'm trying to play Minecraft (which triggers transcoding) and forward the video a little.
Code:
[2025-11-05 21:31:10.094 +01:00] [INF] [36] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.69.4" request
[2025-11-05 21:31:41.823 +01:00] [INF] [31] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Shield". EnablePlaybackRemuxing: False EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2025-11-05 21:31:43.602 +01:00] [INF] [30] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G -canvas_size 1920x1080 -i file:\"/media/Videos/A Minecraft Movie.mkv\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:2 -map -0:0 -codec:v:0 libx264 -preset veryfast -crf 17 -maxrate 62912487 -bufsize 125824974 -profile:v:0 high -x264opts:0 subme=0:me_range=16:rc_lookahead=10:me=hex:open_gop=0 -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -sc_threshold:v:0 0 -filter_complex \"[0:4]scale,scale=3840:2160:fast_bilinear[sub];[0:0]setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale=trunc(min(max(iw\,ih*a)\,min(4080\,4080*a))/2)*2:trunc(min(max(iw/a\,ih)\,min(4080/a\,4080))/2)*2,tonemapx=tonemap=none:desat=0:peak=100:t=bt709:m=bt709:p=bt709:format=yuv420p[main];[main][sub]overlay=eof_action=pass:repeatlast=0\" -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename \"/share/jellyfin/cache/transcodes/d95fc0d8f9eb06b5b17b120469970f15%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/share/jellyfin/cache/transcodes/d95fc0d8f9eb06b5b17b120469970f15.m3u8\""
[2025-11-05 21:31:46.158 +01:00] [INF] [30] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Transcoding kill timer stopped for JobId "b9e73ea33cf84136b79e523152720be1" PlaySessionId "a412042c5bd74442aa4267ec4c9d9404". Killing transcoding
[2025-11-05 21:31:46.165 +01:00] [INF] [30] MediaBrowser.Controller.MediaEncoding.TranscodingJob: Stopping ffmpeg process with q command for "/share/jellyfin/cache/transcodes/58a9a57b5304603dc2aeb6137446801c.m3u8"
[2025-11-05 21:31:51.166 +01:00] [INF] [30] MediaBrowser.Controller.MediaEncoding.TranscodingJob: Killing FFmpeg process for "/share/jellyfin/cache/transcodes/58a9a57b5304603dc2aeb6137446801c.m3u8"
[2025-11-05 21:31:51.175 +01:00] [INF] [30] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) "/share/jellyfin/cache/transcodes/58a9a57b5304603dc2aeb6137446801c.m3u8"
[2025-11-05 21:31:52.544 +01:00] [ERR] [30] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 137
[2025-11-05 21:32:29.601 +01:00] [INF] [25] MediaBrowser.Controller.MediaEncoding.TranscodingJob: Stopping ffmpeg process with q command for "/share/jellyfin/cache/transcodes/d95fc0d8f9eb06b5b17b120469970f15.m3u8"
[2025-11-05 21:32:29.604 +01:00] [ERR] [30] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: "A task was canceled". URL "GET" "/videos/f0c8d743-081f-d526-d9d7-858f54aec57a/hls1/main/0.ts".
[2025-11-05 21:32:29.606 +01:00] [INF] [41] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G -canvas_size 1920x1080 -i file:\"/media/Videos/A Minecraft Movie.mkv\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:2 -map -0:0 -codec:v:0 libx264 -preset veryfast -crf 17 -maxrate 62912487 -bufsize 125824974 -profile:v:0 high -x264opts:0 subme=0:me_range=16:rc_lookahead=10:me=hex:open_gop=0 -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -sc_threshold:v:0 0 -filter_complex \"[0:4]scale,scale=3840:2160:fast_bilinear[sub];[0:0]setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale=trunc(min(max(iw\,ih*a)\,min(4080\,4080*a))/2)*2:trunc(min(max(iw/a\,ih)\,min(4080/a\,4080))/2)*2,tonemapx=tonemap=none:desat=0:peak=100:t=bt709:m=bt709:p=bt709:format=yuv420p[main];[main][sub]overlay=eof_action=pass:repeatlast=0\" -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename \"/share/jellyfin/cache/transcodes/d95fc0d8f9eb06b5b17b120469970f15%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/share/jellyfin/cache/transcodes/d95fc0d8f9eb06b5b17b120469970f15.m3u8\""
[2025-11-05 21:32:34.608 +01:00] [INF] [25] MediaBrowser.Controller.MediaEncoding.TranscodingJob: Killing FFmpeg process for "/share/jellyfin/cache/transcodes/d95fc0d8f9eb06b5b17b120469970f15.m3u8"
[2025-11-05 21:32:34.609 +01:00] [INF] [25] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: Deleting partial stream file(s) "/share/jellyfin/cache/transcodes/d95fc0d8f9eb06b5b17b120469970f15.m3u8"
[2025-11-05 21:32:35.611 +01:00] [ERR] [41] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: FFmpeg exited with code 137
[2025-11-05 21:32:36.181 +01:00] [INF] [29] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.69.4" closed

