You would get much better compression if you use a different font for the timer. Use something more blocky, it's the curves of the digits (the sharp edge between color and black) that affect the compression.
Like for example
https://www.dafont.com/led-calculator.font or
https://www.dafont.com/technology-2.font or
https://www.dafont.com/digital-display.fontIf you get the digits aligned at 8 pixel blocks you may get significant compression.
On x264, I got it down to around 940 KB for the mp4 container but you start to notice artifacts at the edges of the digits. At around 1.2 MB they're gone.
I've loaded the frames into Virtualdub and exported to raw video
video > decode format > 4:2:0 (yv12) , colorspace rec.709 (default for hd), color range fulll 0..255)
file > export > raw video ... 4:2:0 YCbCr planar, R.709 , 8-bit, Y:0-255, coaligned ... save with the extension YUV
Then you can use command line encoders, I used
x264.exe --input-csp yv12 --input-range pc --input-res 1280x720 --fps 10 --profile main --preset placebo --tune animation --qp 35 -o test_qp35_main.mp4 test.yuvtune stillimage may give you better quality but a bit more disk space
--profile main is on purpose, forcing x264 to use a simpler encoding format because with this content type there's really no quality gains by using profile high, so you save a few bits.
--qp ## sets the quality level , it's like jpg quality, how much quality to trade ... 0 is lossless (never use, use 2-5 at most), 63 is worst quality
QP40 gives usable video at 930 KB (910 KB actual h264 stream), 3% is mp4 overhead...
QP35 at 1.14 MB is very usable, barely any blurring at the edge.
With x265 (hevc software encoder) the command line would be something like this :
x265.exe --input test.yuv --fps 10 --input-res 1280x720 --videoformat ntsc --colorprim bt709 --range full --output-depth 8 --profile main --preset placebo --crf 1 -o test_crf1_hevc.mkv
use .h265 or mp4 as extension, i used .mkv out of habit and the attached file is not seekable (you can just remux it with mkvtoolnix to make it seekable)
value after --crf sets the quality level , 0 being highest (lossless practically), 51 lowest quality
I would say you could probably go down to around crf 45 before you start to notice blockiness in the digits like in the attached example ... the attached file compresses to 560 KB (so around 150-200 KB is matroska container overhead)
x265.exe --input test.yuv --fps 10 --input-res 1280x720 --videoformat ntsc --colorprim bt709 --range full --output-depth 8 --frames 100 --profile main --preset placebo --crf 45 -o test_crf45_hevc.mkv
yuv [info]: 1280x720 fps 10000/1000 i420p8 frames 0 - 99 of 3146
raw [info]: output file: test_crf45_hevc.mkv
x265 [info]: HEVC encoder version 3.5+104-ace829667
x265 [info]: build info [Windows][GCC 13.1.0][64 bit] 8bit+10bit+12bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x265 [info]: Main profile, Level-3.1 (Main tier)
x265 [info]: Thread pool created using 16 threads
x265 [info]: Slices : 1
x265 [info]: frame threads / pool features : 4 / wpp(12 rows)
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 4 inter / 4 intra
x265 [info]: ME / range / subpel / merge : star / 92 / 5 / 5
x265 [info]: Keyframe min / max / scenecut / bias : 10 / 250 / 40 / 5.00
x265 [info]: Lookahead / bframes / badapt : 60 / 8 / 2
x265 [info]: b-pyramid / weightp / weightb : 1 / 1 / 1
x265 [info]: References / ref-limit cu / depth : 5 / off / off
x265 [info]: AQ: mode / str / qg-size / cu-tree : 2 / 1.0 / 32 / 1
x265 [info]: Rate Control / qCompress : CRF-45.0 / 0.60
x265 [info]: tools: rect amp rd=6 psy-rd=2.00 rdoq=2 psy-rdoq=1.00 tskip
x265 [info]: tools: signhide tmvp b-intra strong-intra-smoothing deblock sao
x265 [info]: frame I: 2, Avg QP:43.03 kb/s: 334.20
x265 [info]: frame P: 37, Avg QP:46.40 kb/s: 18.43
x265 [info]: frame B: 61, Avg QP:48.61 kb/s: 12.51
x265 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
x265 [info]: Weighted B-Frames: Y:0.0% UV:0.0%
encoded 100 frames in 14.55s (6.87 fps), 21.14 kb/s, Avg QP:47.68
I'm looking into av1 encoder now, will edit or post another comment
later
ok avi1 encoder svt-av1 from
https://jeremylee.sh/bins/actually 2x faster than hevc on my 5800x and does better quality at same size, at qp 60 (lowest is 63) ... got it to around 560 KB and seems better quality than hevc
See attached file ... command line to encode is below, first line
--qp is quality factor - -q, --qp Initial QP level value, default is 35 [1-63]
--preset is like the encoding complexity in x264/hevc (that veryfast, slow, placebo etc) - 0 is highest (like placebo), goes up to 13 for lowest quality
SvtAv1EncApp.exe --input test.yuv --width 1280 --height 720 --fps 10 --color-format 1 --profile 0 --preset 0 --qp 60 --output test_qp60_av1_full.mkv
Svt[info]: -------------------------------------------
Svt[info]: SVT [version]: SVT-AV1 Encoder Lib v1.6.0
Svt[info]: SVT [build] : GCC 13.1.0 64 bit
Svt[info]: LIB Build date: Jul 5 2023 08:02:30
Svt[info]: -------------------------------------------
Svt[info]: Number of logical cores available: 16
Svt[info]: Number of PPCS 141
Svt[info]: [asm level on system : up to avx2]
Svt[info]: [asm level selected : up to avx2]
Svt[info]: -------------------------------------------
Svt[info]: SVT [config]: main profile tier (auto) level (auto)
Svt[info]: SVT [config]: width / height / fps numerator / fps denominator : 1280 / 720 / 10 / 1
Svt[info]: SVT [config]: bit-depth / color format : 8 / YUV420
Svt[info]: SVT [config]: preset / tune / pred struct : 0 / PSNR / random access
Svt[info]: SVT [config]: gop size / mini-gop size / key-frame type : 161 / 32 / key frame
Svt[info]: SVT [config]: BRC mode / rate factor : CRF / 60
Svt[info]: -------------------------------------------
Encoding 2000
Average System Encoding Speed: 10.79
3146
SUMMARY --------------------------------- Channel 1 --------------------------------
Total Frames Frame Rate Byte Count Bitrate
3146 10.00 fps 570930 14.52 kbps
Channel 1
Average Speed: 11.181 fps
Total Encoding Time: 281370 ms
Total Execution Time: 281856 ms
Average Latency: 12762 ms
Max Latency: 15105 ms