# Supported Media for Google Cast

Google Cast and all Cast Web Receiver applications support the media facilities
and types listed on this page.

Some of these require additional coding or the [Web Receiver
SDK](https://developers.google.com/cast/docs/caf_receiver_overview).
See [Create a Basic Web Receiver App](https://developers.google.com/cast/docs/caf_receiver_basic)
for more information about developing your Web Receiver application to support these
media types.

> [!NOTE]
> **Note:** If you're having problems playing streams on a Cast device, it may be an issue with CORS (Cross-Origin Resource Sharing). Use a publicly available CORS proxy server to test your streams. (Please note Google does not control third-party software referenced here, and Google cannot guarantee that third-party software will operate as intended. Please proceed with caution.)

## Image formats

- APNG
- BMP
- GIF
- JPEG
- PNG
- WEBP

> [!NOTE]
> **Note:** Images have a display size limitation of 720p (1280x720). Images should be optimized to 1280x720 or less to avoid scaling down on the receiver device.

## Media container formats

- MP2T
- MP3
- MP4
- OGG
- WAV
- WebM

> [!NOTE]
> **Note:** You can determine if a particular codec is supported with a call to `https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.CastReceiverContext#canDisplayType.` For example:
>
> ```
>    const context = cast.framework.CastReceiverContext.getInstance();
>    context.canDisplayType('audio/mp4', 'mp4a.40.5');  //returns true
> ```

## Video codecs

> [!CAUTION]
> **Caution:** HEVC is not supported on Transport Stream containers.

### Chromecast 1st and 2nd Gen.

- H.264 High Profile up to level 4.1 (720p/60fps or 1080p/30fps)
- VP8 (720p/60fps or 1080p/30fps)

### Chromecast 3rd Gen

- H.264 High Profile up to level 4.2 (1080p/60fps)
- VP8 (720p/60fps or 1080p/30fps)

### Chromecast Ultra

- H.264 High Profile up to level 4.2 (1080p/60fps)
- VP8 (4K/30fps)
- HEVC / H.265 Main and Main10 Profiles up to level 5.1 (4K/60fps)
- VP9 Profile 0 and Profile 2 up to level 5.1 (4K/60fps)
- High Dynamic Range (HDR)
  - Dolby® Vision™
  - HDR10

### Chromecast with Google TV

- H.264 High Profile up to level 5.1 (4Kx2K/30fps)
- HEVC / H.265 Main and Main10 Profiles up to level 5.1 (4Kx2K@60fps)
- VP9 Profile-2 up to 4Kx2K@60fps

### Google Nest Hub

- H.264 High Profile up to level 4.1 (720p/60fps)
- VP9 up to level 4.0 (720p/60fps)

### Nest Hub Max

- H.264 High Profile up to level 4.1 (720p/30fps)
- VP9 up to level 4.0 (720p/30fps)

### Google TV Streamer

- H.264 High Profile up to level 5.2 (4Kx2K/60fps)
- HEVC / H.265 Main and Main10 Profiles up to level 5.1 (4Kx2K@60fps)
- VP9 Profile-2 up to 4Kx2K@60fps
- AV1 Main profile up to level 5.1 (4Kx2K@60fps)

## Audio codecs

Chromecast Audio, Google Home, and Google Home Mini support the following
list of codecs:

- FLAC (up to 96kHz/24-bit)
- HE-AAC
- LC-AAC
- MP3
- Opus
- Vorbis
- WAV (LPCM)
- WebM

Google TV Streamer also supports:

- Dolby® Atmos™ (no passthrough)

## Media type strings

### MP4 video and audio

| Video codec | Video profile | Audio codec | Audio profile | Media type string |
|---|---|---|---|---|
| H.264 level 3.0 | baseline | AAC | aac_he | video/mp4; codecs="avc1.42E01E, mp4a.40.5" |
| H.264 level 3.0 | baseline | AAC | aac_lc | video/mp4; codecs="avc1.42E01E, mp4a.40.2" |
| H.264 level 3.0 | baseline | MP3 |   | video/mp4; codecs="avc1.42E01E, mp4a.69" |
| H.264 level 3.0 | baseline | MP3 |   | video/mp4; codecs="avc1.42E01E, mp4a.6B" |
| H.264 level 3.1 | baseline | AAC | aac_he | video/mp4; codecs="avc1.42E01F, mp4a.40.5" |
| H.264 level 3.1 | baseline | AAC | aac_lc | video/mp4; codecs="avc1.42E01F, mp4a.40.2" |
| H.264 level 3.1 | baseline | MP3 |   | video/mp4; codecs="avc1.42E01F, mp4a.69" |
| H.264 level 3.1 | baseline | MP3 |   | video/mp4; codecs="avc1.42E01F, mp4a.6B" |
| H.264 level 3.1 | main | AAC | aac_he | video/mp4; codecs="avc1.4D401F, mp4a.40.5" |
| H.264 level 3.1 | main | AAC | aac_lc | video/mp4; codecs="avc1.4D401F, mp4a.40.2" |
| H.264 level 3.1 | main | MP3 |   | video/mp4; codecs="avc1.4D401F, mp4a.69" |
| H.264 level 3.1 | main | MP3 |   | video/mp4; codecs="avc1.4D401F, mp4a.6B" |
| H.264 level 4.0 | main | AAC | aac_he | video/mp4; codecs="avc1.4D4028, mp4a.40.5" |
| H.264 level 4.0 | main | AAC | aac_lc | video/mp4; codecs="avc1.4D4028, mp4a.40.2" |
| H.264 level 4.0 | main | MP3 |   | video/mp4; codecs="avc1.4D4028, mp4a.69" |
| H.264 level 4.0 | main | MP3 |   | video/mp4; codecs="avc1.4D4028, mp4a.6B" |
| H.264 level 4.0 | high | AAC | aac_he | video/mp4; codecs="avc1.640028, mp4a.40.5" |
| H.264 level 4.0 | high | AAC | aac_lc | video/mp4; codecs="avc1.640028, mp4a.40.2" |
| H.264 level 4.0 | high | MP3 |   | video/mp4; codecs="avc1.640028, mp4a.69" |
| H.264 level 4.0 | high | MP3 |   | video/mp4; codecs="avc1.640028, mp4a.6B" |
| H.264 level 4.1 | high | AAC | aac_he | video/mp4; codecs="avc1.640029, mp4a.40.5" |
| H.264 level 4.1 | high | AAC | aac_lc | video/mp4; codecs="avc1.640029, mp4a.40.2" |
| H.264 level 4.1 | high | MP3 |   | video/mp4; codecs="avc1.640029, mp4a.69" |
| H.264 level 4.1 | high | MP3 |   | video/mp4; codecs="avc1.640029, mp4a.6B" |
| H.264 level 4.2 | high | AAC | aac_he | video/mp4; codecs="avc1.64002A, mp4a.40.5" |
| H.264 level 4.2 | high | AAC | aac_lc | video/mp4; codecs="avc1.64002A, mp4a.40.2" |
| H.264 level 4.2 | high | MP3 |   | video/mp4; codecs="avc1.64002A, mp4a.69" |
| H.264 level 4.2 | high | MP3 |   | video/mp4; codecs="avc1.64002A, mp4a.6B" |

### MP4 video only

| Video codec | Video profile | Video level | Media type string | Notes |
|---|---|---|---|---|
| Dolby Vision | 05 | 06 | video/mp4; codecs="dvhe.05.06" | 4K24fps |
| Dolby Vision | 05 | 07 | video/mp4; codecs="dvhe.05.07" | 4K30fps |
| Dolby Vision | 05 | 09 | video/mp4; codecs="dvhe.05.09" | 4K60fps |
| Dolby Vision | 08 | 06 | video/mp4; codecs="dvhe.08.06" | 4K24fps, compatible with HEVC decoder |
| Dolby Vision | 08 | 07 | video/mp4; codecs="dvhe.08.07" | 4K30fps, compatible with HEVC decoder |
| Dolby Vision | 08 | 09 | video/mp4; codecs="dvhe.08.09" | 4K60fps, compatible with HEVC decoder |
| H.265 | main | 5.0 | video/mp4; codecs="hev1.1.6.L150.B0" |   |
| H.265 | main | 5.1 | video/mp4; codecs="hev1.1.6.L153.B0" |   |
| H.265 | main10 | 5.0 | video/mp4; codecs="hev1.2.6.L150.B0" |   |
| H.265 | main10 | 5.1 | video/mp4; codecs="hev1.2.6.L153.B0" |   |

### MP4 audio only

| Format | Audio codec | Audio profile | Media type string |
|---|---|---|---|
| M4A | AAC | aac_he | audio/mp4; codecs="mp4a.40.5" |
| M4A | AAC | aac_lc | audio/mp4; codecs="mp4a.40.2" |
| MP3 | MP3 |   | audio/mp3 |
| MPA | MP3 |   | audio/mpeg |
| MPA | MP3 |   | audio/mpeg; codecs="mp3" |
| MP4 | MP3 |   | audio/mp4; codecs="mp4a.69" |
| MP4 | MP3 |   | audio/mp4; codecs="mp4a.6B" |

### MP4 non-compliant audio media types

| Format | Audio codec | Media type string |
|---|---|---|
| M4A | HE-AAC | audio/mp4; codecs="mp4a.40.05" |
| M4A | LC-AAC | audio/mp4; codecs="mp4a.40.02" |

### WebM video and audio

| Format | Video codec | Audio codec | Media type string |
|---|---|---|---|
| WebM | VP8 | Vorbis | video/webm; codecs="vp8, vorbis" |
| WebM | VP9 | Vorbis | video/webm; codecs="vp9, vorbis" |
| WebM (audio only) || Vorbis | audio/webm; codecs="vorbis" |

## Audio passthrough

- AC-3 (Dolby® Digital™ audio technology)
- E-AC-3 (EC-3, Dolby® Digital Plus™ audio technology)
- MPEG-H Audio
- Dolby® Atmos™

The [Web Receiver SDK](https://developers.google.com/cast/docs/caf_receiver_overview)
supports AC-3 passthrough. You can check the codec
support prior to loading content using the
[`CastReceiverContext.canDisplayType()`](https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.CastReceiverContext#canDisplayType)
method with the corresponding media type string for each codec.

To determine whether Dolby® Atmos™ is supported on specific hardware,
check the
[`cast.framework.system.DeviceCapabilities.IS_DOLBY_ATMOS_SUPPORTED`](https://developers.google.com/cast/docs/reference/web_receiver/cast.framework.system)
flag.

| Format | Audio codec | Media type string |
|---|---|---|
| MP4 | AAC | audio/mp4; codecs="mp4a.40.2" |
| MP4 | AC-3 | audio/mp4; codecs="ac-3" |
| MP4 | AC-3 | audio/mp4; codecs="mp4a.a5" |
| MP4 | E-AC-3 | audio/mp4; codecs="ec-3" |
| MP4 | E-AC-3 | audio/mp4; codecs="mp4a.a6" |
| MP4 | MPEG-H Audio | audio/mp4; codecs="mhm1.0x0D" |
| MP4 | Dolby® Atmos™ | audio/mp4; codecs="ec-3"; spatialRendering=true |

<br />

## Delivery methods and adaptive streaming protocols

These are available through use of the
[Web Receiver SDK](https://developers.google.com/cast/docs/caf_receiver_overview).

- MPEG-DASH

  - DRM Support: Widevine (Level 1)
- SmoothStreaming

- HTTP Live Streaming (HLS)

  - DRM Support: AES-128, SAMPLE-AES using Widevine (Level 1)
- Progressive download without adaptive switching

With adaptive bitrate streaming protocols, you must implement [CORS](https://developers.google.com/cast/docs/player#cors).
To implement an encrypted protocol, including DRM, you should develop a
[Custom Receiver](https://developers.google.com/cast/docs/caf_receiver_basic). See [DRM support](https://developers.google.com/cast/docs/mpl/streaming_protocols#drm)
for more information.

## Subtitles and closed captions

Your subtitle resources must implement [CORS](https://developers.google.com/cast/docs/player#cors).

- [TTML - Timed Text Markup Language](http://www.w3.org/TR/ttaf1-dfxp/)
- [WebVTT - Web Video Text Tracks](http://dev.w3.org/html5/webvtt/)
- [CEA-608/708](https://www.cta.tech/Research-Standards/Standards-Listing/Test-Materials.aspx)

<br />

<br />


Dolby, Dolby Digital, Dolby
Digital Plus, Dolby Atmos, and Dolby Vision are trademarks of Dolby
Laboratories, Inc.

<br />