Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Get Started
Design and Develop
Publish
Reference
Support
Skip to main content

FAQs

  • HLS and DASH adaptive streaming playback through Shaka Player using MSE/EME API,
  • Non-adaptive streaming formats (MP4 and MP3) playback through HTMLMediaElement.src attribute,
Yes, both on the simulator and Fire TV stick devices with Vega OS. DPAD and direct play/pause/ff/rw buttons work for transport controls.
Yes, apps can implement custom media controls GUI and call APIs for play, pause and seek as shown here:
For security reasons, we only support using same CDK for audio and video when the video security requirements allow decryption to non-secure memory for example: Widevine’s equivalent of L3 requirements: SW_SECURE_CRYPTO, SW_SECURE_DECODE and even HW_SECURE_CRYPTO that allows SW_SECURE_DECODE at the same time. Playready: SL150 FairPlay: Not supported
In the presence of HW_SECURE_ALL restrictions (a.k.a. L1 for Widevine, SL2000/3000 for PlayReady, Fairplay only operates in this mode) for video, we can support all video variants to share same CDK. Audio MUST use different CDK in this scenario.
  • In DRM there are 2 ways in which CDKs can be requested and managed:
    1. Handle a single CDK per DRM session. This means that if a media asset has audio and video where both are encrypted, Client applications will need to create separate DRM sessions for audio and video even if they share the same CDK. This means multiple license exchanges will occur for a single playback session.
    2. Handle all CDKs with a single DRM session. Exoplayer documentation states that this is the better way as it avoids multiple license exchanges.
  • Shaka Player does not offer a configuration option to choose which of the previous options to use while Exoplayer does through its “Multi-session” knob. The default mode for Exoplayer is the second option.
When a Shaka Player DRM LICENSE_REQUEST_FAILED (6007) error occurs, it’s possible that some servers are unable to interpret input request. To rule out this problem, append a “content-type” header in HTTP request as shown in the following sample code.
Shaka Player, Hls.js and DASH.js (Open Source) and Bitmovin, THEOPlayer and Brightcove (Proprietary) are supported in Vega. Amazon releases patches to port Shaka Player, Hls.js and DASH.js to Vega.
Vega provides a W3C Media API. Shaka Player is used to demonstrate the usage of this API. We release patches to Shaka Player, which are required for this purpose. You can build your own player using the API. You are free to choose any open-source (Shaka Player, HLS.js, DASH.js etc) JS-player or any proprietary player like Bitmovin, TheoPlayer etc.Shaka Player is being actively developed. You can choose any Shaka Player version as per your requirement. For information on the latest version of Shaka Player for which patches are released, see Play adaptive content (HLS/DASH) with Shaka Player. Developers can refer to the patches released by us and port them (if required). If you need a specific version of Shaka Player for which we haven’t provided one, you can refer to the patches we supplied and port them to your required version of the player. If you encounter any issues with the W3C API, report them and we will provide support in resolving the issue. Note that currently there is no commitment to release patches for each and every new version of Shaka Player.
Shaka Player patches are released under the Apache License 2.0.
The W3C Media API supports popular audio and video codecs used in streaming media use cases such as Dolby Audio (AC3, eAC3, AC4, EC3_JOC), AAC ( LC, AAC+ and eAAC+), MP3, Opus , FLAC, and Vorbis for audio, and H.264, H.265, VP8, VP9, MPEG4, and AV1 for video.
The W3C Media API supports DRM schemas such as Widevine (L1) and PlayReady (SL3000).
Yes, if there is no change in codec type between Main→Ad and Ad→Main content. Otherwise no.
Some of the common permissions required for media playback use cases are listed below. Based on your use case, missing permissions can lead to playback not starting or a black screen being displayed.
Enable sequence mode:this.player.configure('manifest.hls.sequenceMode', true)We recommend using sequence mode operation of source buffer for MPEG2 TS streams.
Widevine L1 (secure path) for audio is not supported on any Amazon platform. Audio should use non-secure path, while video can use secure. Append multikey=true to the URL to use separate keys for each track.
The W3C Media API supports in-band and out-of-band closed captions and subtitle in CEA 608, CEA 708, TTML, WebVTT, and SRT formats. Apps are able to select the closed captions and subtitles based on language. Closed Captions/Subtitle are supported for URL and MSE mode playback.
For information on in-manifest captions, see the Closed Captions (CC) and Subtitles knowledge base article.
The W3C Media API now supports CEA608/708 caption decoding. This is the preferred way to parse captions in a Vega app. To disable in-band caption parsing by Shaka Player, unregister the media segment captions parsers.
For information on client side ad-insertion, see Sample Code for Client Side Ad-Insertion (CSAI) knowledge base article.
Audio decryption is not supported for hardware secured memory buffers. This means that the HW_SECURE_ALL robustness value for audio is not supported. To decrypt and decode audio and video use the MediaKeys object.When requesting a MediaKeySystemAccess object using requestMediaKeySystemAccess(...) make sure that the robustness member for audioCapabilities and videoCapabilities in the MediaKeySystemConfiguration dictionary is properly set. For example, if video MUST be secure for Widevine, use 'robustness' : 'HW_SECURE_ALL' and for audio ALWAYS use 'robustness' : 'SW_SECURE_CRYPTO'. This makes sure that video data is decrypted using secured by hardware buffers while audio data is decrypted using non-secure buffers.
Last modified on January 27, 2026