I run my Plex server in a 24 core beast, with a SiliconDust Prime tuner. It works flawlessly, but consumes energy like there is no tomorrow, so I’ve decided to go small and port the server into an Intel NUC machine.
For agents we use Roku Tvs and Samsung TV.
Since then, I’ve started to pay more attention to the CPU consumption, and noted the following CPU utilization:
HIGH cpu when live tv is showing on the TVs
LOW cpu when live tv is recording to disk
LOW cpu when a previously recorded live tv show plays on the TVs
Looking at the details, it seems that the TVs can’t get direct stream and are forcing a transcode to take place in the first case, but that is not the case in the other two scenarios, with the same file type.
Is there anything that I can do on the agents or the server to avoid transcoding something that the TV can play natively? I mainly use Plex to watch liveTV and live TV recorded shows.
I’ve notice the same behavior, and I don’t think it’s related to transcoding necessarily, I think it may be simpler than that - when you’re watching “Live TV” (your first scenario), it’s doing both jobs at once, recording a TV stream to disk and it’s also playing it back at the same time. That is doing twice the work of either just recording or just watching something already recorded (your cases 2 and 3).
That would be my best guess as to why it’s working so much harder to watch Live TV - my solution so far has just been to not do that! I try to record everything ahead of time and I usually use VLC to play back the videos after they have recorded.
I thought the same at first, but when verifying the status of the server in the dashboard, I can see that pre recorded shows are played directly, without transcoding, as if the TV and the server agreed that this particular file format is able to be streamed directly thus no CPU impact when playing a recorded show.
When playing LiveTV, this handshake between TV and server doesn’t seem to occur, as the default behavior is to transcode the show before sending to the TV and thus the high CPU impact.
I don’t mind having to wait an extra second or so to allow for some communication with the TV that will ensure that shows are streamed. This will allow Live TV watching on less power hungry devices.
Recorded media is analyzed so Plex is able to make better decisions than when it has to remux the live stream for consumption by a client. Arbitrarily de-interlacing and audio conversion in most cases. Filter the log for MDE to find out what decisions are being made.
To many have complained about the long startup time for tuning channels for Plex to backtrack and add more analysis to the startup.
MDE logs reinforce the idea that livetv does not correctly analyze the stream and thus the default transcode is used. Is there any way to change the behavior?
Do you/can you use Hardware Transcoding? This will help with the video, subtitles(Closed Captioning) will still hit the CPU. Getting your clients to direct play will provide the most benefit. For the Roku, enable allow mpeg2 is usually required. Samsung presents it’s own issues since the client is currently requiring insecure connections.
While a Live Stream is playing if you check the dashboard from a browser via https://app.plex.tv/web it will give you an idea of what is happening.
Plex does not provide an interface to override transcoder parameters. I have seen user create work arounds but that gets involved.