Skip to main content

Supported formats and codecs by Mediabunny

The following features from Remotion are using Mediabunny:

Therefore, format support is bound to the formats and codecs supported by Mediabunny. Mediabunny's compatibility data is mirrored on this page.

Supported container formats​

  • ISOBMFF-based formats (.mp4, .m4v, .m4a, ...)
  • QuickTime File Format (.mov)
  • Matroska (.mkv)
  • WebM (.webm)
  • Ogg (.ogg)
  • MP3 (.mp3)
  • WAVE (.wav)
  • ADTS (.aac)
  • FLAC (.flac)
  • MPEG Transport Stream (.ts)
  • HLS (.m3u8) - HTTP Live Streaming playlists (VOD only)

Video codecs​

  • 'avc' - Advanced Video Coding (AVC) / H.264
  • 'hevc' - High Efficiency Video Coding (HEVC) / H.265
note

Chrome Headless Shell does not support HEVC in headless mode. This means that during rendering of Remotion videos server-side, HEVC videos cannot be decoded using <Video> from @remotion/media.

  • 'vp8' - VP8
  • 'vp9' - VP9
  • 'av1' - AOMedia Video 1 (AV1)
  • 'prores' - Apple ProResv4.0.487

ProResv4.0.487​

ProRes is not natively supported by WebCodecs and is not enabled by default in @remotion/media. For Remotion-specific instructions, see Embedding ProRes.

If you need ProRes support, you can enable it yourself by installing and registering the decoder:

npx remotion add @mediabunny/prores
src/Root.tsx
import {registerProresDecoder} from '@mediabunny/prores'; registerProresDecoder();

For maximum performance, @mediabunny/prores uses shared-memory multithreading when the page is cross-origin isolated. If cross-origin isolation is not enabled, ProRes decoding still works, but falls back to a slower algorithm.

Audio codecs​

  • 'aac' - Advanced Audio Coding (AAC)
  • 'opus' - Opus
  • 'mp3' - MP3
  • 'vorbis' - Vorbis
  • 'flac' - Free Lossless Audio Codec (FLAC)
  • 'pcm-u8' - 8-bit unsigned PCM
  • 'pcm-s8' - 8-bit signed PCM
  • 'pcm-s16' - 16-bit little-endian signed PCM
  • 'pcm-s16be' - 16-bit big-endian signed PCM
  • 'pcm-s24' - 24-bit little-endian signed PCM
  • 'pcm-s24be' - 24-bit big-endian signed PCM
  • 'pcm-s32' - 32-bit little-endian signed PCM
  • 'pcm-s32be' - 32-bit big-endian signed PCM
  • 'pcm-f32' - 32-bit little-endian float PCM
  • 'pcm-f32be' - 32-bit big-endian float PCM
  • 'pcm-f64' - 64-bit little-endian float PCM
  • 'pcm-f64be' - 64-bit big-endian float PCM
  • 'ulaw' - μ-law PCM
  • 'alaw' - A-law PCM
  • 'dts' - DTSv4.0.520

AC-3 and E-AC-3v4.0.427​

AC-3 (Dolby Digital) and E-AC-3 (Dolby Digital Plus) are not natively supported by WebCodecs and are not enabled by default in @remotion/media.

If you need AC-3/E-AC-3 support, you can enable it yourself by installing and registering the decoder:

npx remotion add @mediabunny/ac3
src/Root.tsx
import {registerAc3Decoder, registerAc3Encoder} from '@mediabunny/ac3'; registerAc3Decoder(); registerAc3Encoder();

DTSv4.0.520​

DTS is not natively supported by WebCodecs and is not enabled by default in @remotion/media.

If you need DTS support, you can enable it yourself by installing and registering the extension:

npx remotion add @mediabunny/dts
src/Root.tsx
import {registerDtsDecoder, registerDtsEncoder} from '@mediabunny/dts'; registerDtsDecoder(); registerDtsEncoder();

Compatibility table​

Not all codecs can be used with all containers. The following table specifies the supported codec-container combinations:

.mp4.mov.mkv.webm.ogg.mp3.wav.aac.flac.ts
'avc'✓✓✓✓
'hevc'✓✓✓✓
'vp8'✓✓✓✓
'vp9'✓✓✓✓
'av1'✓✓✓✓
'prores'✓✓✓
'aac'✓✓✓✓✓
'opus'✓✓✓✓✓
'mp3'✓✓✓✓✓
'vorbis'✓✓✓✓✓
'flac'✓✓✓✓
'pcm-u8'✓✓✓
'pcm-s8'✓
'pcm-s16'✓✓✓✓
'pcm-s16be'✓✓✓
'pcm-s24'✓✓✓✓
'pcm-s24be'✓✓✓
'pcm-s32'✓✓✓✓
'pcm-s32be'✓✓✓
'pcm-f32'✓✓✓✓
'pcm-f32be'✓✓
'pcm-f64'✓✓✓
'pcm-f64be'✓✓
'ulaw'✓✓
'alaw'✓✓
'ac3'✓✓✓✓
'eac3'✓✓✓✓
'dts'✓✓✓✓
note

ProRes entries in the table above require manual registration of the @mediabunny/prores decoder.

AC-3 and E-AC-3 entries in the table above require manual registration of the @mediabunny/ac3 decoder.

DTS entries in the table above require manual registration of the @mediabunny/dts decoder.

CORS​

All media files must be either CORS-enabled or served from the bundle using staticFile().

See also​