Ubuntu - Video - Change ffmpeg -threads settings
The option flag you want is really just -threads and you would use it like this (for just one thread):
ffmpeg -i somefile.wmv -c:a libfdk_aac -c:v libx264 -threads 1 transcoded.mp4
However, there are quite a few subtleties that will raise your server load and ops time, such as rescaling, applying filters and final frame quality / frame rate - not to mention the fact that some VM architectures actually read and write everything twice (once natively and once virtually!!!)
Here are a few tips to get your speed up:
- use a queue, so that only one item is ever being transcoded at a time
- request smaller files from your users
- use the full horsepower of your machine by:
- reading and writing from a ramdisk
- switching to bare metal for transcoding tasks
- use -threads 0
Use docker
There is already a predefined ffmpeg image on github: https://github.com/jrottenberg/ffmpeg.
A single conversion will likely run slower because of the overhead but if you run multiple instances concurrently this could be a huge benefit.
Any this will scale very well, not to mention the improved security because each task is isolated from the underlying OS.
docker run jrottenberg/ffmpeg \ -i http://url/to/media.mp4 \ -stats \ $ffmpeg_options - > out.mp4