3 hours ago
(This post was last modified: 3 hours ago by Efficient_Good_5784.)
(8 hours ago)buedi Wrote: Thanks for your reply. The work over time you describe is interesting. I thought Jellyfin transcodes more or less in realtime what is needed (+ a bit more to prevent buffering). But now I observe that despite pausing the Video, the GPU utilization does not change. Does that mean that once a Video is started, Jellyfin (or more precise ffmpeg) encodes the whole file until it is finished, no matter how fast the Video is played back? Then it indeed seems to be another story of course.Yes, Jellyfin will transcode a video with ffmpeg as fast as it can. The limit will be on how fast the device (CPU/GPU) can encode the video.
So when you start a video that will transcode, the entire video will get transcoded in one go and will be stored in your server's transcodes folder in chunks.
These chunks of video are then sent to the client as requested.
If you are streaming a video through Jellyfin's webUI player, you can open the playback info for the current stream.
If you pay attention to the info of a transcode, you will see that the UI tells you how much fps your transcode is processing at by the system.
Next to the fps, there is a multiplier. This number indicates how fast your transcode is progressing in comparison to the video's actual fps.
You want the multiple to be 1.0x or higher to avoid any possible buffering.
An example of this is the following.
Lets say you have a video that is 24fps. If your transcode is progressing at an average of 30fps, that's 1.25x the fps of the video.
This means that the transcode is happening 25% faster than what the actual video is playing at.
If you do the math (1 / 1.25 = .8 ), you find out that your transcode will finish at 80% the time it takes to watch the video at its original speed of 24fps.
Now, you can afford to drop below 1.0x without buffering provided you built up a good buffer by having the transcode progress be above 1.0x at other times of the process.
Finally, there are some settings in Jellyfin's transcoding section of the dashboard that lets you limit how much a transcode progresses before being put on pause.
I would check those out if they interest you.