Skip to main content

Encoding Guide

Backed by FFmpeg, Remotion allows you to configure a variety of encoding settings. The goal of this page is to help you navigate through the settings and to help you choose the right one.

Choosing a codec

Remotion supports 5 video codecs: h264 (default), h265, vp8, vp9 and prores. While H264 will work well in most cases, sometimes it's worth going for a different codec. Refer to the table below to see the advantages and drawbacks of each codec.

CodecFile extensionFile sizeEncoding timeBrowser compatibilityHardware acceleration possible

H.264 also known as MPEG-4

.mp4, .mov or .mkvMediumVery fast

Very good

No

H.265 also known as HEVC

.mp4 or .hevcMediumFast

Very poor

No
VP8.webmSmallSlow

Okay

No
VP9.webmVery smallVery slow

Okay

No
ProRes.movLargeFastNoneOn macOS
info

Click on a browser compatibility link to see exactly which browsers are supported on caniuse.com.

You can set a config using Config.setCodec() in the config file or the --codec CLI flag.

Hardware acceleration is available from Remotion 4.0.228.

Controlling quality using the CRF setting

Applies only to h264, h265, vp8 and vp9.

No matter which codec you end up using, there's always a tradeoff between file size and video quality. You can control it by setting the so called CRF (Constant Rate Factor). The lower the number, the better the quality, the higher the number, the smaller the file is – of course at the cost of quality.

Be cautious: Every codec has it's own range of acceptable values and a different default. So while 23 will look very good on a H264 video, it will look terrible on a WebM video. Use this chart to determine which CRF value to use:

CodecMinimum - Best qualityMaximum - Best compressionDefault
H26415118
H26505123
VP84639
VP906328

You can set a CRF in the config file using the Config.setCrf() function or use the --crf command line flag.

note

If you enable hardware acceleration, you cannot set a crf.

Controlling quality using --video-bitrate and --audio-bitrate

Use the following options to set the video and audio bitrate:

This option is incompatible with other quality options.

Controlling quality using ProRes profile

Applies only to prores codec.

For ProRes, there is no CRF option, but there are profiles which you can set using the --prores-profile flag or the setProResProfile config file option.

ValueFFmpeg settingBitrateSupports alpha channel
"proxy"0~45MbpsNo
"light"1~102MbpsNo

"standard" (default)

2~147MbpsNo
"hq"3~220MbpsNo
"4444"4~330MbpsYes
"4444-xq"4~500MbpsYes

Higher bitrate means higher quality and higher file size.

Audio-only export

You can pass mp3, wav or aac as a codec. If you do it, an audio file will be output in the corresponding format. Quality settings will be ignored.

GIFs

You can also render your video as a GIF.

Audio codec

available from v3.3.42

Using the --audio-codec flag, you can set the format of the audio that is embedded in the video. Not all codec and audio codec combinations are supported and certain combinations require a certain file extension and container format.

The container format will be automatically derived based on the file extension.

Video codecDefaultSupported audio codecsPossible file extensions
h264aac.mp4 (default), .mkv , .mov
pcm-16.mkv (default), .mov
mp3.mp4 (default), .mkv , .mov
h264-tspcm-16.ts (default)
aac.ts (default)
aacaac.aac (default), .3gp , .m4a , .m4b , .mpg , .mpeg
pcm-16.wav (default)
h265aac.mp4 (default), .mkv , .hevc
pcm-16.mkv (default)
mp3mp3.mp3 (default)
pcm-16.wav (default)
prores *aac.mov (default), .mkv , .mxf
pcm-16.mov (default), .mkv , .mxf
vp8opus.webm (default)
pcm-16.mkv (default)
vp9opus.webm (default)
pcm-16.mkv (default)
wavpcm-16.wav (default)

GIFs don't support audio.

* Note: In versions before v4.0.0 the default audio codec for ProRes was aac. Now it's pcm-16.

File extensions

Specifying a file extension when rendering media will determine the default codec. You may override the codec using --codec as long as the combination is supported in the table above.

File extensionDefault codec
.3gpaac
.aacaac
.gifgif
.hevch265
.m4aaac
.m4baac
.mkvh264-mkv
.movprores
.mp3mp3
.mp4h264
.mpegaac
.mpgaac
.mxfprores
.wavwav
.webmvp8
.tsh264-ts

What other settings do you need?

Which of the dozens of options that FFmpeg supports would you like to see exposed in Remotion? Let us know by opening an issue on our issue tracker!

See also