8

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
    Commented Sep 12, 2020 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
    Commented Sep 13, 2020 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
    Commented Sep 14, 2020 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
    Commented Sep 14, 2020 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
    Commented Sep 14, 2020 at 8:56

5 Answers 5

16

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. Commented Sep 13, 2020 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). Commented Sep 13, 2020 at 1:18
15

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. Commented Sep 12, 2020 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
    Commented Sep 12, 2020 at 6:22
4

This might be an old question, but I ran some benchmarks on Cloud providers which might give an indication how FFmpeg runs on different hardware.

Benchmarking Cloud Providers with FFmpeg

This benchmark was done with the same file and same command on multiple cloud providers to test their performance.

Input file
Size: 719.966.208 bytes
Format: AVI
Duration: 104 minutes
Quality: 480p

You can download the input file from here, to reproduce the tests. https://mega.nz/file/Epd0yJyK#LDg8qLTebY0x2PEAUdfzigYm3NSviWi3asQ849q5Uv0

FFmpeg command

time ffmpeg -i /media/input.avi -c:v libx264 -crf 19 -preset slow -c:a aac -b:a 192k -ac 2 /media/out.mp4 -loglevel error -progress - -nostats

Slow preset was used to maintain quality as much as possible.

Results

Provider Instance CPU RAM OS FFmpeg version Result Montly costs
Vultr Intel prev gen 1 vCPU 1 GB RAM Ubuntu 22 FFmpeg v4.4 29m 44s € 5
Vultr Intel prev gen 2 vCPU 4 GB RAM Ubuntu 22 FFmpeg v4.4 15m 56s € 20
Vultr AMD Epyc last gen 4 vCPU 8 GB RAM Ubuntu 22 FFmpeg v4.4 8m 10s € 48
Vultr AMD Epyc last gen 4 vCPU 8 GB RAM Ubuntu 22 FFmpeg v5.0 8m 23s € 48
Vultr AMD Epyc last gen 8 vCPU 16 GB RAM Ubuntu 22 FFmpeg v5.0 5m 36s € 96
Vultr Intel last gen 2 vCPU 4 GB RAM Ubuntu 22 FFmpeg v5.0 19m 43s € 20
Vultr Intel last gen 2 vCPU 4 GB RAM Ubuntu 22 FFmpeg v4.4 19m 43s € 20
Vultr AMD last gen 2 vCPU 2 GB RAM Ubuntu 22 FFmpeg v4.4 17m 52s € 18
...
AWS EC2 t2 micro3 1 vCPU 1 GB RAM Ubuntu 18 FFmpeg v5.0 150m 54s € ...
AWS EC2 t2 medium 2 vCPU 4 GB RAM Ubuntu 18 FFmpeg v5.0 24m 11s € ...
...
DigiOcean Shared (AMD) 1 vCPU 1 GB RAM Ubuntu 20 FFmpeg v5.0 35m 51s € 6
DigiOcean Shared (AMD) 2 vCPU 2 GB RAM Ubuntu 20 FFmpeg v5.0 20m 9s € 6
DigiOcean Dedicated (Intel) 2 vCPU 4 GB RAM Ubuntu 20 FFmpeg v5.0 28m 37s € 40
DigiOcean Dedicated (Intel) 4 vCPU 8 GB RAM Ubuntu 20 FFmpeg v5.0 14m 57s € 80
...
Scaleway DEV1-S1 2 vCPU 2 GB RAM Ubuntu 20 FFmpeg v5.0 20m 7s € 8
Scaleway DEV1-L1 4 vCPU 8 GB RAM Ubuntu 20 FFmpeg v5.0 17m 2s € 31
Scaleway GP1-S2 8 vCPU 32 GB RAM Ubuntu 20 FFmpeg v5.0 11m 4s € 132
Scaleway DEV1-S1 2 vCPU 2 GB RAM Ubuntu 20 FFmpeg v4.4 13m 12s € 8
Scaleway GP1-M2 16 vCPU 64 GB RAM Ubuntu 20 FFmpeg v4.4 11m 1s € 266
Scaleway DEV1-XL1 4 vCPU 12 GB RAM Ubuntu 20 FFmpeg v4.4 18m 20s € 47
...
Google Cloud e2-micro 1 vCPU 1 GB RAM Ubuntu 20 FFmpeg v4.4 156m 12s €9
Google Cloud e2-small 2 vCPU 2 GB RAM Ubuntu 20 FFmpeg v4.4 38m 30s €13
Google Cloud n2d-highcpu-4 4 vCPU 4 GB RAM Ubuntu 20 FFmpeg v4.4 15m 59s €74
...
OVH Cloud S1-2 1 vCPU 2 GB RAM Ubuntu 20 FFmpeg v4.4 50m 13s €3
OVH Cloud S1-8 2 vCPU 8 GB RAM Ubuntu 20 FFmpeg v4.4 30m 57s €13
OVH Cloud D2-8 4 vCPU 8 GB RAM Ubuntu 20 FFmpeg v4.4 14m 52s €18
OVH Cloud C2-304 8 vCPU 30 GB RAM Ubuntu 20 FFmpeg v4.4 7m 31s €125
OVH Cloud B2-305 8 vCPU 30 GB RAM Ubuntu 20 FFmpeg v4.4 8m 58s €85

  1. AMD EPYC 7281
  2. AMD EPYC 7401P
  3. 1 vCPU does not translate to 1 core, but translates to 0.25% of a CPU core. That explains its performace. 2 vCPU translates to 50%. This only applies to the e2-micro and e2-small instances
  4. High core clock 3.4 GHz
  5. Low core clock 2.4 GHz

1
  • Awesome comparison table!
    – abberdeen
    Commented Jan 25, 2023 at 21:32
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. Commented Sep 14, 2020 at 1:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .