supported audio and video formats on Roku devices
It is important to understand the available encoding methods and supported formats when streaming content on Roku devices. The following information will give you a good basis and help you choose the best options for distributing content based on quality and availability.
Roku officially supports the following media formats:
- Video file types:
MP4
,MOV
,M4V
,MKV
,WebM
- Video codecs:
H.264/AVC
,HEVC/H.265
,VP9
- Audio file types:
AAC
,MP3
,WMA
,WAV (PCM)
,AIFF
,FLAC
,ALAC
,AC3
,E-AC3
- Streaming protocols:
HLS
,Smooth
,DASH
These have been tested and/or are currently in-use. Other formats or encodings may be supported, but should be evaluated on a case by case basis.
Sections:
- Streaming Protocols
- Supported Video Formats
- Supported Audio Formats
- Encoding Guidelines
- Dolby Audio Features and Recommendations
- 4K UHD Video Streaming Requirements
- HDR10 Video Streaming Requirements
Because network speeds can vary over time, a crucial aspect when providing the best experience to your viewers is providing multiple video streams of varying quality. Roku devices can then automatically select the best streaming quality based on the viewer's network connection.
Roku supports the following widely-used standard formats for adaptive bit rate switching:
- HLS (HTTP Live Streaming)
- Smooth Streaming
- DASH (Dynamic Adaptive Streaming over HTTP)
ℹ️ Live streams can also be delivered using these protocols although live streaming using DASH is in beta at this time. Please report any playback issues to [email protected].
Roku devices support the following file types:
- MP4
- MOV
- M4V
- MKV
- WebM1
Videos can be encoded using H.264
, HEVC (H.265)
, or VP9
codecs.
H.264 | HEVC (H.265)1 | VP91 | |
---|---|---|---|
Aspect Ratio2 | Various | Various | Various |
Dimension | Various up to 1920x1080 | Various up to 3840x2160 | Various up to 3840x2160 |
Video File Format | .mp4 , .mov , .m4v , .mkv |
.mp4 , .mov , .m4v , .mkv |
.webm , .mkv |
Streaming Format | HLS: .m3u8 , .ts Smooth: .ismc DASH: .dash |
HLS: .m3u8 , .ts Smooth: .ismc DASH: .dash |
DASH: .dash |
Input Frame Rate 3 | 24p, 25p, 30p, 50p, 60p | 24p, 25p, 30p, 50p, 60p | 24p, 25p, 30p, 60p6 |
Color Space | Rec.709 | Rec.709, Rec.2020 | Rec.709, Rec.2020 |
Profile | main, high | main, main 10 | profile 0, profile 26 |
Level | 4.1, 4.2 | 4.1, 5.0, 5.1 | n/a |
Video Mode | Constrained VBR | Constrained VBR | Constrained VBR |
Average Streaming Video Bit rate | Up to 10Mbps | Up to 40Mbps | Up to 40Mbps |
Average USB Video Bit rate | 384Kbps – 10Mbps | Up to 40Mbps | Up to 40Mbps |
Peak Video Bit rate | 1.5x average | 1.5x average | 1.5x average |
Key Frame Interval 4 | < 10s | < 10s | < 10s |
DRM | PlayReady for Smooth/DASH Streaming AES-128 bit encryption for HLS |
PlayReady for Smooth/DASH Streaming AES-128 bit encryption for HLS |
PlayReady for DASH Widevine Level 1 |
Roku 4K capable devices | All other Roku devices | |
---|---|---|
TEE5 | Yes | No |
HDCP | 2.2 | 1.4 |
For more device specifications, see Roku Devices.
1 Only supported on Roku 4K capable devices.
2 The dimensions vary on a title-by-title basis depending on the source material and the target aspect ratio for the encoding (such as 4:3 or 16:9). Content should always be encoded at full width, and the height is adjusted. For example, a 1.66 aspect ratio source is encoded as a 720x432 video and displayed as letterboxed for a 4:3 display.
3 The frame rate used for encoding depends on the source material. Film content is generally 23.976 FPS, while video content is generally at 29.97.
4 All segments should start with an IDR frame and align across all bit rate variants. The recommended segment size is < 10 seconds for VOD and < 5 seconds for live content, and the segment size should be constant.
5 Trusted Execution Environment
6 Only supported on HDR10 capable Roku devices.
Roku devices support the following audio file types:
- AAC: HE-AACv2, AAC-LC (CBR)
- MP3
- WMA, WAV (PCM)
- AIFF
- FLAC
- ALAC
- Dolby Audio: Dolby Digital (AC3), Dolby Digital Plus (E-AC3)
- Passthrough: DTS
We strongly recommend that content that is available with multichannel audio (i.e., 5.1, 7.1 channels) be made available in Dolby Digital Plus (E-AC3) as the preferred multichannel format for streaming on our Dolby Digital Plus enabled devices.
AAC | AC3/E-AC3 | DTS | |
---|---|---|---|
Decode/Passthrough | Decode1 | Decode2 | Passthrough |
Sampling Rate | 44.1 Khz, 48 Khz | 48Khz | Passthrough |
Sample Size | 16-bit | 16-bit | Passthrough |
Bit rate | 32-256 Kbps | 96-768 Kbps | Passthrough |
Number of Channels | 2.0 | 2.0, 5.1, 7.1, Atmos | Passthrough |
1 Multichannel AAC is not supported on all Roku models. Roku TVs, Roku 4, and Roku Ultra set-top-boxes support multichannel decode to PCM stereo.
2 Roku TVs and Roku Ultra can decode AC3 and E-AC3. All other Roku devices will do passthrough to the receiving device. Roku Ultra supports the latest Dolby technologies such as Dolby Atmos and System Sound Mixing (MS12).
For typical streaming video applications, we recommend a range of about 800Kbps to about 4.0Mbps. For USB playback, we recommend that you stay under 8.0 Mbps. This provides a good balance between quality and support for a wide number of users. In some cases, lower and higher bit rates have been used, but this frequently results in a bad quality, or limits the numbers of users that can view those encodings. If content contains a surround sound track, AAC 2-channel stereo should be provided as a backup audio track.
Bit rate Recommendations:
- Roku recommends encoding a low bit rate stream around 800Kbps.
- Roku recommends the user have at least a 1.5Mbps connection.
- Some customers will have low bit rate connections around 1Mbps or experience intermittent network load that causes drops below Roku recommended network speeds.
Several content meta-data properties are also available for configuring streaming performance:
- SwitchingStrategy
- AdaptiveMinStartBitrate
- AdaptiveMaxStartBitrate
- MinBandwidth
- MaxBandwidth
ℹ️ See Content Meta-Data for more information.
With the Roku Ultra, Dolby Audio is natively integrated. Roku recommends encoding in Dolby Digital Plus instead of Dolby Digital.
Features include:
- Consistent audio delivery
- System sound mixing (MS12)
- Maximum compatibility with device end points
Stereo and 5.1 content will natively decode on devices while 7.1 content will passthrough.
When encoding in Dolby Digital Plus, the following bit rates are recommended:
Channels | Bit rate |
---|---|
Stereo 2.0 | 96 kbps |
Multi-channel 5.1 | 192 kbps |
Multi-channel 7.1 | 384 kbps |
Developers can encode video content using services like Azure or Encoding.com.
ℹ️ For more information, visit http://developer.dolby.com
Specification | Requirement |
---|---|
HDMI Version | 2.0 |
HDCP Version | 2.2 |
Codec | HEVC, VP9 |
Encoding Profile | HEVC Level 5.1 Main 10 or VP9 Profile 0 |
Input Framerate | 24p, 25p, 30p, 50p, 60p |
Color Space | Rec.709, Rec.2020 |
Key Frame Intervals | < 10s (VOD), < 5s (Live) |
Resolution | 3840x2160 |
Encryption | PlayReady only |
Additional Notes:
DASH
is the preferred adaptive streaming format withHEVC
as the preferred video codec.- The recommended bit rates for variants in an adaptive bit rate stream are 8, 10, 15, and 20Mbps.
- All recommended bit rates should be in the same
DASH
stream. - All encoded segments must start with an IDR frame.
- The recommended adaptive streaming segment sizes are 2.5, 3.3, or 5 seconds.
- The segment sizes should be constant and the same for all bit rates for the best adaptive switching and trick play (with 10 second BIF files).
There are several conditions that must be checked to see if 4K UHD content can be played:
- Video output mode must be 2160p
- HDCP 2.2 must be enabled
- The device must be able to decode the proper codecs and encoding profiles
- (Optional) Check if the device decrypts within a TEE
Function CanPlay4K() as Boolean
dev_info = CreateObject("roDeviceInfo")
hdmi_status = CreateObject("roHdmiStatus")
' Check if the output mode is 2160p
video_mode = dev_info.GetVideoMode()
if (Left(video_mode, 5) <> "2160p")
return false 'output mode is not set to 2160p
end if
' Check if HDCP 2.2 is enabled
if hdmi_status.IsHdcpActive("2.2") <> true
return false 'HDCP version is not 2.2
end if
' Check if the Roku player can decode 4K 60fps HEVC streams or 4K 30fps vp9 streams
hevc_video = { Codec: "hevc", Profile: "main", Level: "5.1" }
vp9_video = { Codec: "vp9", Profile: "profile 0" }
can_decode_hevc = dev_info.CanDecodeVideo(hevc_video)
can_decode_vp9 = dev_info.CanDecodeVideo(vp9_video)
if can_decode_hevc.result <> true OR can_decode_vp9.result <> true
return false 'device cannot decode 4K HEVC AND VP9 streams
end if
' (Optional) Check if the Roku player decrypts inside a TEE
drm_info = dev_info.GetDrmInfo()
if Instr(1, drm_info.playready, "tee") = 0
return false 'device does not decrypt inside TEE
end if
return true
End Function
ℹ️ This example returns true only if both 4K HEVC and 4K VP9 decoding is supported. If your 4K UHD content is only encoded in one of these codecs, modify the third conditional statement as necessary.
Specification | Requirement |
---|---|
HDMI Version | 2.0a |
HDCP Version | 2.2 |
Codec | HEVC, VP9 |
Encoding Profile | HEVC Level 5.1 Main 10, VP9 Profile 2 |
Input Framerate | 24p, 25p, 30p, 50p, 60p |
Color Space | Rec.2020 |
Before playback, check to see if the Roku device and connected display supports HDR10 with GetDisplayProperties().hdr10 using the roDeviceInfo component.
Function canPlayHDR() as Boolean
dev_info = createObject("roDeviceInfo")
return dev_info.getDisplayProperties().hdr10
End Function
ℹ️ This function should only be called after detecting 4K UHD Compatibility.
Additional Notes:
- HDR10 is only supported on Roku Premiere Plus and Roku Ultra at this time.
- Adaptive bitrate streams should not have HDR and non-HDR variants in the same manifest.