Skip to main content

Video Codec and File Format Support by Signage Player

Quick answer

H.264 in an MP4 container is still the safest format for digital signage — every mainstream player decodes it, usually in hardware. H.265/HEVC halves the file size at the same quality and is now widely supported, but not universally, so it is the right choice only when you know your fleet. The trap worth knowing: the Raspberry Pi 5 removed H.264 hardware decoding. It decodes HEVC in hardware but falls back to software for H.264, which the Pi 4 handled in hardware — so the "safe" codec is the slower one on the newest Pi. VP9 and AV1 are browser-oriented and poorly supported by signage players; avoid both unless you are playing through a browser you control. If you need one preset for a mixed fleet: H.264 High profile, MP4 container, AAC audio, at the display's native resolution and 8–12 Mbps for 1080p.

Hardware decode by player

Hardware decode matters more than mere support. A player that decodes in software will drop frames, run hot and age faster.

PlayerH.264H.265 / HEVCVP9AV1
Raspberry Pi 4Hardware, 1080p60 onlyHardware, 4K60Software onlyNo
Raspberry Pi 5No H.264 block at allHardware, 4K60Software onlyNo
Android / Android TVHardware, universalHardware on mostHardware on manyNewer SoCs only
Chrome OS / ChromeboxHardwareHardware on newer chipsHardwareNewer chips only
Windows (Intel/AMD)HardwareHardware (needs HEVC extension)Hardware on newerNewer GPUs
iPad / iOSHardwareHardware, excellentSoftware onlyA17 / M-series
Display system-on-chipHardwareUsually hardwareRarelyRarely
Browser playbackUniversalSafari yes, Chrome partialChrome, FirefoxGrowing

Treat this as a planning guide and verify on your actual device: Android and system-on-chip support in particular varies by chipset and firmware, not by the Android version number.

The Raspberry Pi 5 trap

This catches people out because it runs against every expectation about newer hardware being more capable.

Raspberry Pi 4Raspberry Pi 5
H.264 decodeHardware, up to 1080p60No H.264 block at all
H.265 decodeHardware, 4K60Hardware, 4K60
Practical resultH.264 fine at 1080p, H.265 for 4KH.265 for everything

The Pi 5 dropped the dedicated H.264 decode block entirely. Its CPU is fast enough to software-decode 1080p H.264 in many cases, but it costs CPU headroom, raises temperature and can stutter on high-bitrate files or when anything else is happening on the device. Neither Pi decodes H.264 at 4K in hardware — the Pi 4 stops at 1080p60 — so 4K content should be H.265 on any Pi.

What to do:

  • Pi 5 fleet: encode H.265/HEVC. This is the one case where HEVC is clearly correct.
  • Pi 4 fleet: H.264 is fine at 1080p; use H.265 for 4K.
  • Mixed Pi 4 and Pi 5: HEVC plays in hardware on both, at 4K60. Encode HEVC.
  • Any Pi, 4K content: H.265 at 25–35 Mbps. Never 4K H.264.
  • Mixed Pi and everything else: H.264 at a moderate bitrate, and keep 1080p files under about 10 Mbps so the Pi 5 software path copes.

See Raspberry Pi digital signage for the full platform picture.

Container formats

The container is the wrapper. It matters less than the codec, but a wrong choice still breaks playback.

ContainerSupportUse for signage
MP4UniversalDefault choice. H.264 or H.265 with AAC audio
MKVVariableAvoid. Widely used in media centres, patchily supported by players
WebMBrowser-orientedOnly for browser-based playback, VP8/VP9
MOVVariableExport target, not a delivery format. Remux to MP4
AVILegacyAvoid. Old, inefficient, poor codec support
TS / M2TSBroadcastOnly for IPTV and broadcast sources

Remux, do not re-encode, when you only need to change container. Moving a H.264 stream from MOV to MP4 is a lossless copy operation that takes seconds.

Still image and audio formats

Image formatSupportNotes
JPEGUniversalDefault for photographs
PNGUniversalDefault for graphics, logos, anything with transparency
WebPWideSmaller than both; verify on older players
AVIFLimitedSmallest, but support is still thin on signage players
GIFUniversalAnimation support varies; prefer short video
SVGBrowser-based onlyExcellent for HTML content, not for native image playlists
AudioSupportNotes
AACUniversalDefault. Use inside MP4
MP3UniversalFine for standalone audio
AC-3 / E-AC-3VariableBroadcast; licensing varies by device
FLAC / WAVVariableUnnecessarily large for signage

Universal preset — plays on essentially everything:

SettingValue
CodecH.264, High profile, Level 4.2
ContainerMP4
ResolutionDisplay native — 1920×1080 or 3840×2160
Frame rate30 fps (or match the source)
Bitrate8–12 Mbps at 1080p, 25–35 Mbps at 4K
AudioAAC, 128–192 kbps, or none
Keyframe interval2 seconds
Pixel formatyuv420p

Efficient preset — when you control the fleet and it supports HEVC:

SettingValue
CodecH.265 / HEVC, Main profile
ContainerMP4
Bitrate4–6 Mbps at 1080p, 12–18 Mbps at 4K
Everything elseAs above

HEVC roughly halves the file at equivalent quality, which cuts storage, update time and — on metered or cellular links — data cost. See network bandwidth requirements.

yuv420p is not optional. Video exported as 4:2:2 or 4:4:4 from an editor will refuse to play, or play as a green screen, on a large share of hardware decoders. It is one of the most common causes of "the file works on my laptop but not on the screen".

Common playback failures

SymptomLikely causeFix
Green or purple screenPixel format not yuv420pRe-encode with -pix_fmt yuv420p
Plays on PC, not on player4:2:2/4:4:4, or unsupported profileRe-encode as H.264 High, yuv420p
Stutters, drops framesSoftware decoding, or bitrate too highMatch codec to hardware decode; lower bitrate
Audio but no videoCodec not supported by the decoderRe-encode to H.264
Video but no audioAudio codec unsupported (often AC-3)Re-encode audio to AAC
Plays then freezesOverheating from software decodeUse the hardware-decoded codec; check cooling
File rejected on uploadContainer or size limitRemux to MP4

Quick decision guide

  1. Do you know every player in the fleet? No → H.264 High, MP4, yuv420p. Done.
  2. Yes, and it is all Raspberry Pi 5? → H.265/HEVC.
  3. Yes, and it is mixed Pi 4 and Pi 5? → H.265/HEVC, which is hardware-decoded on both.
  4. Yes, and it supports HEVC everywhere, and bandwidth or storage is tight? → H.265/HEVC.
  5. Browser-based playback you control? → VP9 in WebM is viable, but H.264 still simplest.
  6. Any doubt at all? → H.264. It is slightly larger and it always plays.

Try it on your own screens, free

DigitalSignage.com, which publishes this guide, runs a permanent free plan: the first 3 screens are free forever (no credit card, no ads, no time limit), then from $3 per screen per month with volume pricing via a public calculator. The free SignPlayer runs on Windows, Mac, Linux, Android and Android TV, Chrome OS, Raspberry Pi, iPad or any browser, so you can test a codec on the exact hardware you plan to deploy before committing to it. Start free · 2026 pricing · How 11 vendors compare on price

Try it on your own screens
First 3 screens free forever, no credit card, no ads. Works on the TV you already own with a $30 player, Raspberry Pi, Chrome OS, Windows or iPad. About two minutes to your first screen.
Create free accountSee 2026 pricing