What are the minimum requirements/specs for ffmpeg?
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.
75 Answers
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.
2In 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.
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.
2It'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.
1This 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.
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 - -nostatsSlow 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