Now supporting FFmpeg v5.0.0: new features & filters
Upgrading stacks is a big deal, and we make sure to be careful with the versions we choose to offer to maximize compatability, as well as to bring the latest and greatest features offered by the FFmpeg team.
However, with the release of v5.0.0 ("Lorentz"), it was hard to say no. With a number of new filters, muxers, decoders and encoders, there's plenty of new toys to play around with. Say goodbye to many of the old encode/decode APIs as well, as they've been superceded by an N:M based API.
You can find the changelog on the FFmpeg website, and below you can see which formats, codecs and filters Transloadit has gained and lost support for.
You can convert from these formats:
-
aax
-
ace
-
argo_brp
-
binka
-
bitpacked
-
cri_pipe
-
dash
-
gem_pipe
-
imf
-
ipu
-
jack
-
kmsgrab
-
luodat
-
mca
-
mcc
-
mods
-
moflex
-
msp
-
pgx_pipe
-
photocd_pipe
-
scd
-
sga
-
simbiosis_imx
-
svs
-
xbm_pipe
You can convert to these formats:
-
alp
-
amv
-
apm
-
argo_asf
-
ttml
-
wsaud
You can convert from and to these formats:
-
argo_cvg
-
avs3
-
obu
You can convert to these codecs:
-
adpcm_argo
-
adpcm_ima_alp
-
adpcm_ima_amv
-
adpcm_ima_apm
-
adpcm_ima_ws
-
bitpacked
-
cfhd
-
exr
-
pfm
-
rpza
-
smc
-
speedhq
-
ttml
You can convert from these codecs:
-
adpcm_ima_acorn
-
adpcm_ima_moflex
-
argo
-
cri
-
fastaudio
-
gem
-
ipu
-
mobiclip
-
msnsiren
-
msp2
-
pcm_sga
-
pgx
-
photocd
-
sga
-
simbiosis_imx
You can use these filters:
-
acrusher
-
adecorrelate
-
adenorm
-
adynamicequalizer
-
adynamicsmooth
-
aemphasis
-
aeval
-
aexciter
-
afade
-
afftfilt
-
afreqshift
-
afwtdn
-
agate
-
alatency
-
alimiter
-
anequalizer
-
anlmf
-
aperms
-
aphaseshift
-
apsyclip
-
arnndn
-
aspectralstats
-
asubboost
-
asubcut
-
asupercut
-
asuperpass
-
asuperstop
-
atilt
-
avectorscope
-
bbox
-
bilateral
-
blackdetect
-
blend
-
chromanr
-
colorcontrast
-
colorcorrect
-
colorize
-
colortemperature
-
convolution
-
curves
-
datascope
-
deband
-
deblock
-
despill
-
doubleweave
-
epx
-
estdif
-
exposure
-
fade
-
fftdnoiz
-
fftfilt
-
frei0r
-
grayworld
-
guided
-
haldclut
-
hsvhold
-
hsvkey
-
huesaturation
-
identity
-
kirsch
-
lagfun
-
latency
-
lenscorrection
-
limitdiff
-
limiter
-
lut
-
lut1d
-
lut2
-
lut3d
-
lutrgb
-
lutyuv
-
maskedclamp
-
maskedmax
-
maskedmerge
-
maskedmin
-
maskedthreshold
-
maskfun
-
mix
-
monochrome
-
morpho
-
msad
-
negate
-
nnedi
-
perms
-
phase
-
pixscope
-
prewitt
-
pseudocolor
-
psnr
-
readeia608
-
roberts
-
scharr
-
shear
-
shufflepixels
-
sidechaingate
-
sobel
-
sofalizer
-
speechnorm
-
ssim
-
stereotools
-
super2xsai
-
swaprect
-
tblend
-
threshold
-
tlut2
-
tmedian
-
tmidequalizer
-
tmix
-
varblur
-
vif
-
w3fdif
-
weave
-
xcorrelate
-
xmedian
-
zscale
You can’t convert to these formats:
-
caca
-
singlejpeg
You can’t use these filters:
-
avgblur
-
remap
-
uspp
Trying a new filter
Lets take a look at an FFmpeg filter, which you can use as a starting point for your explorations.
Here's a small Template that uses the colorkey
filter to remove a green screen from a
video stream. We use the similarity
and blend
parameters to also tweak how sensitive our chroma
key is, to try and remove as much of the green background as possible. We also have to convert our
file to webm
, since this supports transparent video streams.
{
":original": {
"robot": "/upload/handle"
},
"remove_green_screen": {
"use": ":original",
"robot": "/video/encode",
"result": true,
"ffmpeg_stack": "v5.0.0",
"preset": "empty",
"ffmpeg": {
"vf": "colorkey=0x00FF00:similarity=0.2:blend=0.3",
"c": "copy",
"c:v": "vp9",
"f": "webm"
}
},
"exported": {
"use": ["remove_green_screen", ":original"],
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"url_prefix": "https://demos.transloadit.com/"
}
}
As you can see, it's simple to directly use FFmpeg commands from within a transcoding step. Following the same steps, you can extend the capabilties of any of our FFmpeg powered Robots to suit your needs.
Results
Below are the results from the Template that we made.
:original
remove_green_screen
Wrapping up
Of course, this is only a small piece of the larger FFmpeg pie 🥧 I hope that you can use this Template as a baseline for your own deep-dive into the FFmpeg gold-mine, as there's plenty to discover.
As always, if you run into any issues when upgrading to the new stack, please report it to us on Intercom. We'll be quick to squash any bugs that you may come across.