6

I am currently using a small software program I made in Python that utilises ffmpeg on my personal laptop that is overqualified to run it (core i7, 16gb ram etc), but I would like to move it over to an older computer which is fully reset except for the OS.

Here are the older laptop's specs:

  • 250gb HDD

  • Windows Vista Home Premium

  • 2gb RAM

  • Intel Centrino 2 processor

I guess my main question is, does ffmpeg support older OS's (such as Windows Vista) and (by today's standards) relatively low-end hardware? I can't find any system requirements page on ffmpeg.org or anywhere else.

The videos the program processes are relatively low-resolution with low bitrates, and no longer than 2 minutes 30 second.

7
  • 5
    XP support was removed a couple of years ago, but Vista should be fine. – Gyan Sep 12 '20 at 4:39
  • 5
    Have you considered some Linux without UI, just command line? That will free up a lot of RAM (and you will need as much as possible of it). – PTwr Sep 13 '20 at 11:07
  • 4
    You should definitely not use Vista because Windows is going to use a lot of the 2GB RAM. Linux server seems like a good solution. You will be able to do light multitasking but ffmpeg is probably going to use up as much of the resources as it can. – qwr Sep 14 '20 at 3:12
  • 1
    @pigeonburger What makes you think you wouldn’t "be able to edit any code on it" (and what code, exactly) ? Ubuntu Server is basically Ubuntu without any graphical desktop environment, as it uses much more resources than a command-line-only interface. Also, there ARE command-line text editors, such as vi(m), emacs, and (my favorite for a beginner) nano. – breversa Sep 14 '20 at 8:36
  • The easier solution may be to use Visual Studio 2019 on the new laptop. It can work with Ubuntu, either via WSL as a VM on the Windows system or remote on the older laptop. – MSalters Sep 14 '20 at 8:56
14

FFmpeg (and codecs like x264) will compile and run on nearly anything (it's written in fairly portable C), it's just a question of how fast it will be.

If you're just decoding and running a filter or something, you might be fine, especially if real-time playback of high-rez video isn't necessary.

If you just need audio, that's not very computationally intensive compared to video and should be fine for most things.


Video encode / decode performance on old CPUs:

Video quality (bitrate) isn't the key point, it's resolution (how much RAM an uncompressed frame takes). Also, having 2x as many pixels to process simply takes more CPU time for more macroblocks to decode. You might find that 720p is much faster than 1080p.

If you truly don't have enough RAM to keep a few dozen or hundred frames in memory, decoding / encoding speed will fall off a cliff as you hit swap space. Especially encoding where you want the encoder to have some lookahead for good decisions on where to spend bits.

Another softer threshold is L3 cache size, especially given the relatively lower memory bandwidth of old CPUs.

Centrino is like Pentium-M era. That predate SSSE3, so you don't have a SIMD byte shuffle (pshufb), and the SIMD execution units are only 64-bits wide. (Instructions like psadbw xmm0, xmm1 to calculate Sum of Absolute differences for 2 sets of 8 bytes in parallel will decode as 2 separate uops.)

So h.264 decode / encode speeds will be significantly worse, clock for clock, than on a Nehalem or Sandybridge CPU from a few years later. And much worse clock for clock than on a modern core like Haswell or Skylake with AVX2 and very efficient unaligned vector loads, or Zen / Zen 2.

Your Centrino 2 is probably also only single-core, and encoding speed scales nearly linearly with core count, at least for the first few cores. If you're used to a quad-core system, that's another factor of 4 slower on top of the very large per-core performance dropoff.

And h.265 encoding will be almost a lost cause. e.g. I played around some with x265 on my old Core 2 (E6600 2.4GHz dual-core Conroe with DDR2-566) system before getting a quad-core Skylake (i7-6700k with DDR4-2666). x265 -preset slower was about 40x faster on the Skylake, IIRC, for 1920x1080 encoding at like crf 25.

But x265 doesn't have nearly as good support for old CPUs; it started development after Core 2 was obsolete, unlike x264. For x264, Core 2 was once the top-of-the-line so x264 has good optimizations for old CPUs. It should have hand-written asm tuned for CPUs of Centrino 2 vintage, there's just not as much that CPU can do. So "the best it can do" is still not great.

2
  • Yeah, they're pretty low-res videos as well as having low bitrates. I'm basically adding video filters (e.g. subtitles, adjusting contrast and saturation, etc). All the input files are h264 mp4s and I intend for the output files to be like that as well. I assume when using the video filters, etc I can't just simply copy the vcodec, I have to re-encode it as well? And it only has an old intel gpu so I assume QSV encoding is out of the question? Thanks for all this. – pigeonburger Sep 13 '20 at 1:11
  • 2
    @pigeonburger: Subs should normally just be muxed, not "burned in" to the video. Just muxing them into the container takes minimal CPU time, always just I/O limited, if you don't need to transcode the video for any other reason. (Yes, if you need to change the values of any pixels, you need to transcode. I'm not aware of any codecs or containers that allow a contrast or other setting for the player to apply during playback, unfortunately.) en.wikipedia.org/wiki/Intel_Quick_Sync_Video was new in Sandybridge, so no, and its quality per bitrate sucks anyway (especially early versions). – Peter Cordes Sep 13 '20 at 1:18
16

In reality, there are no requirements for the FFMPEG to run. It will run on virtually any operating system and hardware.

The real question is: Will it run well for the functions you are trying to perform? While the computer you specify is old, more than likely, FFMPEG will run just fine for low quality video.

5

Yes , as @Keltari says ffmpeg doesn't have any minimum requirements. It will run on any hardware on supported operating system.

But since video editing is an intensive task, specs of your laptop will quite lag on high quality videos. You need more CPU for faster speed. It uses optimal number of threads by default. If you have more cores, speed and encoding will be faster. The RAM usually affects the filters, bit rate and in other encoding options. The GPU also affects, if you are using NVidia, then it supports up to 2 parellel encodings. Better get an Intel GPU.

And for Windows operating system., Windows XP support has been ended. Vista is still supported.

2
  • Yes, I'm aware of how intense it can be, but this is really good information, so thanks. – pigeonburger Sep 12 '20 at 6:07
  • 2
    Besides brute compute capability (# threads..etc), many components have vector optimizations (like AVX512) which an entry-grade or old CPU may not have. – Gyan Sep 12 '20 at 6:22
2

It's true that anything will run FFMPEG just fine.

But what I think most people are missing here is that older hardware simply has worse electrical efficiency: it takes more power to execute the same calculations.

It's in your best interest to still use your more recent computer for your simple video rendering given you'll consume fewer watts of power for the same work.

1
  • 1
    Yes, I'm aware that it won't be as efficient - it's more an issue of convenience - I take my newer computer everywhere with me, and as such I can't leave it running 24/7. I know it'll take a lot longer and consume more power. I'd like this older computer to just be a temporary solution while I work out a more efficient solution. – pigeonburger Sep 14 '20 at 1:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.