It’s Olympics time and this is the first time I’ve ever seriously used the DVR functionality of Plex. While I’m pleased as punch at the quality of the video being captured, the bitrate, as discussed in quite a few threads, is quite high. Not as high as capturing the raw MPEG2 stream, but still a bit higher than needed for HEVC, as I understand it.
I’m recording from CBC, which is 720p/60 @ 16Mb OTA. With the default transcode quality, I’m transcoding at 9Mb which translates to roughly 2GB per 30min, which I feel is a little bit extra for HEVC.
I know I could perform tests and figure out what works for me, but I’m certain that folks have already beaten this horse into glue, so I’m just curious.. what value have you set for the transcode quality?
Deets for us nerds
—-
Source:
Virtual Channel 4.1 CBOT-DT
Frequency 539.000 MHz
Program Number 3
Modulation Lock 8vsb
Signal Strength 100%
Signal Quality 96%
Symbol Quality 100%
Streaming Rate 16.561 Mbps
Destination:
Duration 29:58
Bitrate 9576 kbps
Width 1280
Height 720
Aspect Ratio 1.78
Video Resolution 720p
Container MPEGTS
Video Frame Rate 60p
Duration 29:58
File Milano Cortina Olympics 2026 (2026) - 2026-02-06 07 00 00 - Primetime.ts
Size 2.08 GB
Codec HEVC
Bitrate 9000 kbps
Bit Depth 8
Chroma Location left
Chroma Subsampling 4:2:0
Codec ID HEVC
Coded Height 720
Coded Width 1280
Color Primaries bt709
Color Range tv
Color Space bt709
Color Trc bt709
Frame Rate 59.94 fps
Height 720
Level 3.1
Profile main
Ref Frames 1
Stream Identifier 256
Width 1280
Display Title 720p (HEVC Main)
Extended Display Title 720p (HEVC Main)
I’d start test recordings with a setting of 60. Then increase if you think it’s too blurry, or reduce further to save more storage space.
Use programmes with rapid movements and fast camera panning, like sports etc. as these will demonstrate the limitations more obviously.
I’ve done some testing in my own environment since I was also curious. The “Transcode Quality” value seems to affect (primarily?) these three parameters passed to the Plex Transcoder (ffmpeg):
‘qp’ - Quantization Parameter. Broadly, it controls the encoding quality (lower = better quality). It has an effect on how much compression is applied.
‘maxrate’ - Constrains the maximum output bitrate for variable bitrate encodes.
‘bufsize’ - Broadly, control the amounts of buffered data used for calculating the average bitrate. A smaller buffer results in more frequent recalculations, potentially (negatively) affecting output quality.
Plex appears to use a fairly linear application of these parameters as the ‘transcoder quality’ is increased:
0: qp=25, maxrate=8000 Kbps, bufsize=16000 Kbps
25: qp=22, maxrate=11030 Kbps, bufsize=22060 Kbps
50: qp=20, maxrate=14061 Kbps, bufsize=28122 Kbps
99: qp=15, maxrate=20000 Kbps, bufsize=40000 Kbps
(I didn’t test 75. Come to think of it, I probably should have tested 24 and 49 instead of 25 and 50.)
You can have a look at the FFMPEG docs to get a better understanding of how these parameters affect encoding quality/file sizes (the above was an extremely broad overview). Also bear in mind that this is still very much an experimental feature (both encoding to H.265 and encoding video while recording, in general). So the algorithms used and the values specified may change over time.
Keep in mind that the values I posted above (particularly the ‘maxrate’) are parameters being passed to the Plex Transcoder to define and constrain the encoding. It doesn’t necessarily mean that a file is going to result in any of those as the final average bitrate.
Those values essentially say “take the source stream, apply this qp, constrain it to at most maxrate Kbps, using this bufsize.”
Ok I’ll run some tests, I’m using AMD Hardware encoding and it worked great until I noticed I was getting with a setting of 99 (thinking it was an effort not a bit rate setting) ending with files 4x if I just stored the raw mpeg2 stream.
I was looking for something to save space while maintaining most of the quality by jumping from MPEG2 to something newer. My encoding understanding is very old, back to the target size rather than target bitrate.
I use a postprocessing script so my DVR Plex transcoding is 99, so that if I am watching Live then I get best picture, its not being saved anyways. And my transcoding directory is a Ramdisk, so writes/size dont matter.
For DVRs that I actually want to record my postprocessing script then uses NVENC to transcode to HEVC at QP30 p5 and scales everything down to 720p.
I am happy with it. These are general stats (Plex DVR file size to postprocessed DVR file):
[1.6G → 320M] - [1 min 13 sec]
[1.4G → 251M] - [1 min 1 sec]
[4.6G → 595M] - [3 min 54 sec]
[10G → 1.5G] - [7 min 47 sec]
Ends up being about 10 megabytes per minute. So 1 hour show is ~600 megs. And transcode speeds are roughly 1 hour show takes 3 min to transcode.
I have an LG OLED tv that does a fabulous job upscaling 720p to 4k to where its hard to tell the difference between live Plex stream at 99 quality and the transcoded much smaller file. TV stations broadcast at 1080p, so upscaling has to be done either way.
General
Unique ID : 131591460116008480846385794218161090640 (0x62FF97E58B233495653BCBB7E25C3050)
Complete name : Saturday Night Live (1975) - S51E12 - Alexander Skarsgard; Cardi B.mkv
Format : Matroska
Format version : Version 4
File size : 570 MiB
Duration : 1 h 4 min
Overall bit rate : 1 236 kb/s
Writing application : Lavf61.5.101
Writing library : Lavf61.5.101
ErrorDetectionType : Per level 1
Video
ID : 1
Format : HEVC
Format/Info : High Efficiency Video Coding
Format profile : Main@L3.1@Main
Codec ID : V_MPEGH/ISO/HEVC
Duration : 1 h 4 min
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 29.970 (30000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Writing library : Lavc61.10.100 hevc_nvenc
Default : No
Forced : No
Color range : Limited
Audio
ID : 2
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Codec ID : A_AAC-2
Duration : 1 h 4 min
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Delay relative to video : -67 ms
Writing library : Lavc61.10.100 libfdk_aac
Language : English
Default : No
Forced : No