Hardware accelerated encoding
Encoding is the process of converting a sequence of images into a video file.
Besides rendering frames, encoding is one of the two steps required to create a video.
From Remotion v4.0.228, Remotion supports hardware-accelerated encoding in some cases.
Since encoding is platform- and codec-specific, only a few scenarios are supported at the moment.
- Currently, only macOS is supported (Acceleration using VideoToolbox)
- ProRes is supported from v4.0.228, H.264 and H.265 are supported from v4.0.236
Enable hardware accelerated encoding
By default, hardware acceleration is "disabled"
.
You can set the hardwareAcceleration
option to "if-possible"
to enable hardware acceleration if it is available.
If you want the render to fail if hardware acceleration is not possible, set the option to "required"
.
In SSR APIs
Use the hardwareAcceleration
option in the renderMedia()
function.
tsx
awaitrenderMedia ({composition ,serveUrl ,codec : 'prores',outputLocation ,inputProps ,hardwareAcceleration : 'if-possible',});
tsx
awaitrenderMedia ({composition ,serveUrl ,codec : 'prores',outputLocation ,inputProps ,hardwareAcceleration : 'if-possible',});
In the CLI
Use the --hardware-acceleration
option in the npx remotion studio
command.
bash
npx remotion render MyComp --codec prores --hardware-acceleration if-possible
bash
npx remotion render MyComp --codec prores --hardware-acceleration if-possible
In the Studio
In the Remotion Studio, you can set the hardware acceleration option in the "Advanced" tab when rendering a video.
With the config file
You can set the setHardwareAcceleration()
option in the config file.
ts
import {Config } from '@remotion/cli/config';Config .setHardwareAcceleration ('if-possible');
ts
import {Config } from '@remotion/cli/config';Config .setHardwareAcceleration ('if-possible');
In Remotion Lambda and Cloud Run
These options are not supported in Remotion Lambda and Cloud Run, because those cloud services do not support hardware acceleration.
File size
Note that the file size is significantly larger by default when using hardware acceleration, likely because less compression is applied.
We recommend that you use the --video-bitrate
flag to control the file size.
We find that --video-bitrate=8M
achieves a similar file size than software encoding when exporting a H.264 Full HD video.
Tell if hardware acceleration is being used
Run the render with verbose logging. If the render is using hardware acceleration, you will see a log message like this:
Encoder: prores_videotoolbox, hardware accelerated: true
Encoder: prores_videotoolbox, hardware accelerated: true
Don't rely on the exact wording of the log message to determine if hardware acceleration is being used.