What video codec puts the CPU/GPU under the least possible load while decoding?

6

1

I'm interested in transcoding a video I own for use as a screensaver; size isn't an issue, but I want to stress the processor and video card as little as possible as far as video decoding goes.

What is/are my best option(s)?

The system in question runs Windows on a dual core 2.4GHz i7 with 10GB RAM and a choice of Intel HD Graphics 4000 and NVIDIA GeForce 620M, although I'd be interested in a generic answer, since I have other OS and hardware choices as well. I have variety of older computers to choose from.

oKtosiTe

Posted 2013-01-08T10:23:27.993

Reputation: 7 949

If size isn't an issue.. raw video? ( ͡° ͜ʖ ͡°) ffmpeg -i input.mkv -c:v rawvideo output.mkv – JamesTheAwesomeDude – 2014-12-17T16:34:11.693

Can you provide more details on your system, e.g. operating system, CPU&GPU type? – Stefan Seidel – 2013-01-08T10:25:43.700

Yes, of course. – oKtosiTe – 2013-01-08T10:27:40.823

Answers

10

The main component of complexity is the codec standard itself. As Stefan Seidel already mentioned, MPEG-1 is probably the easiest to encode and decode. MPEG-2 should also be relatively easy to handle. But your video will be huge if you want a decent quality.

MPEG-4 and H.264 add a bit of complexity here. One of the most important (and widely used) features here are B frames. Here, the a frame of the video can depend on multiple frames that were shown before or might be shown later. This means: More computation needed, more memory needed, more disk access.

So, if you're encoding your video, make sure to disable B-pictures. In H.264 this can be achieved by sticking to the Baseline profile (e.g. in FFmpeg with -profile:v baseline). The baseline profile was included in order to support faster encoding and playback devices with low processing capabilities (such as mobile phones).

In any case, your result depends on how your operating system delegates the decoding tasks. If it's just using the CPU, stick to the "simple" codecs. If it's using the GPU, you should be fine to use H.264.

Certain players like VLC may use the GPU for decoding video, but this is not guaranteed and heavily depends on your OS and the graphics card. I recommend simply doing a few tests with different codecs. The fact that you're using a screensaver and not a dedicated player may very well change your results too, so don't rely on testing with, e.g. VLC.

slhck

Posted 2013-01-08T10:23:27.993

Reputation: 182 472

I believe lossless huffyuv is also a good alternative to lossy mpeg-1. – jiggunjer – 2015-12-18T00:37:26.130

Sorry for taking so long to get back to this question. Your answer is concise and highlights the fact that there is no one-size-fits-all solution. Accepted. – oKtosiTe – 2014-01-13T10:33:07.263

3

From a CPU load point of view, and without doing a lot of research on this, I would say MPEG1 is probably a good choice. If your hardware is, however, capable of hardware-decoding MPEG2, MPEG4, h264 or similar codecs, it's much better to use this, because the graphics chips are highly optmized for playing these and use very little power, and the CPU can stay mostly idle during this task.

Stefan Seidel

Posted 2013-01-08T10:23:27.993

Reputation: 8 812