ApsaraVideo Player SDK is a component of the MediaBox Audio and Video SDK. It provides video playback for live streaming and video on demand (VOD) scenarios. The SDK supports multiple platforms, including Web, Android, iOS, Flutter, HarmonyOS, Windows, and macOS. This topic describes the features of ApsaraVideo Player SDK.
Starting from February 14, 2025 (version 7.0.0), the Professional Edition is available for the mobile ApsaraVideo Player SDK in addition to the Standard Edition. To obtain the Professional Edition, contact our business development team. After you obtain the license, follow the instructions in Activate a player license to activate it.
If your spending on ApsaraVideo VOD, ApsaraVideo Live, or Intelligent Media Services resources reaches a specific amount, you can receive a one-year license for the Professional Edition of ApsaraVideo Player SDK for free. For more information, see ApsaraVideo Player SDK billing.
Newly obtained licenses for the Professional Edition of ApsaraVideo Player SDK for mobile support only version 7.0.0 and later. Before you obtain a license, confirm the SDK version integrated into your application.
Standard features
This section describes the standard features of ApsaraVideo Player SDK, using the Web, Android, iOS, Flutter, and HarmonyOS clients as examples. ✔️ indicates that the feature is supported. ❌ indicates that the feature is not supported. — indicates that the feature is not applicable to the client.
Playback protocols and formats
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
On-demand playback | Supports common on-demand audio and video formats, such as FLV, HLS, MP4, and MP3. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️. Some mobile clients do not support the FLV format. |
Live playback | Supports common live streaming audio and video formats, such as RTMP, FLV, and HLS. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️. The RTMP protocol is not supported. Some mobile clients do not support the FLV format. |
Time shifting | Supports playback of time-shifted live streams. You can set the start time, end time, and current supported time. Dragging is supported. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
H.264 encoding protocol | Supports playback of video streams that use the H.264 encoding protocol. You can switch between software and hardware decoding. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️. On the web, software or hardware decoding depends on the browser settings. |
H.265 encoding protocol | Supports playback of video streams that use the H.265 encoding protocol. You can switch between software and hardware decoding. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️. On the web, software or hardware decoding depends on the browser settings. You must apply to use this feature. For more information, see Value-added features. |
H.266 encoding protocol | Supports playback of video streams that use the H.266 encoding protocol. | ✔️. (Supported only by the Professional Edition. You must integrate the H.266 decoding plugin.) | ✔️. (Supported only by the Professional Edition. You must integrate the H.266 decoding plugin.) | ❌ | ❌ | ✔️. On the web, software or hardware decoding depends on the browser settings. You must apply to use this feature. For more information, see Value-added features. |
H.265 adaptive playback | If hardware decoding of an H.265 stream fails and an H.264 backup stream is configured, the player automatically switches to the H.264 backup stream. If no H.264 backup stream is configured, the player automatically switches to software decoding for the H.265 stream. | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ❌ | ❌ |
Real-Time Streaming (RTS) | Supports Alibaba Cloud Real-Time Streaming (RTS) for high concurrency, low stuttering, and millisecond-level latency. | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Low-latency live streaming | Supports low-latency stream playback using the LL-HLS and DASH protocols. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
DASH protocol | Supports playback of standard DASH video streams, such as SegmentBase and SegmentTemplate. | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️ |
QUIC acceleration | Supports the QUIC transport protocol to improve video transmission efficiency. | ✔️ | ✔️ | ✔️ | ✔️ | — |
HDR video playback | Supports multiple HDR formats, such as HDR10 and HLG. | ✔️ | ✔️ | ✔️ | ❌ | ✔️. Support depends on the browser. |
URL playback | Supports playback of online and local videos from a URL. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
VID playback | Supports playback using a video ID (VID). The player can obtain streaming URLs for multiple definitions if available. Examples include VidAuth playback and VidSts playback. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
SEI messages | Receives and reads Supplemental Enhancement Information (SEI) messages. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Network protocols
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Custom Header | Customize HTTP headers when requesting audio or video resources. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️. Not supported for MP4. Partially supported for HLS and DASH. |
Cloud domain name HTTPDNS | Sends domain name resolution requests to a DNS server over HTTP instead of using the traditional local DNS. This prevents domain hijacking, cross-network access issues, and resulting playback failures. (Only Alibaba Cloud domain names are supported). | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
HTTP/2 | Supports HTTP/2. Features such as binary framing, multiplexing, and header compression significantly improve web performance and reduce data interaction latency. | ✔️ | ✔️ | ✔️ | ✔️ | Depends on browser support. For more information, see Can I use http2? |
HTTP/3 | Supports HTTP/3. It uses the QUIC protocol for faster and better acceleration. | ✔️ | ✔️ | ✔️ | ✔️ | Depends on browser support. For more information, see Can I use http3? |
Playback control
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Basic controls | Supports basic playback controls, such as start, stop, pause, seek, and autoplay. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Seek | Supports seeking to a specific position (the UI supports gestures). When you seek within the buffered content, the buffer is not cleared, which allows for fast seeking. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Precise seek | Supports seeking to a specific position with frame-level precision. | ✔️ | ✔️ | ✔️ | ✔️ | Supports precise seek with millisecond-level accuracy. |
Seek within cache | When you seek within the buffered content, the buffer is not cleared, which allows for fast seeking. | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Resume playback | Supports setting a start time to resume playback. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Loop playback | Supports automatically replaying the audio or video after playback finishes. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
List playback | Supports list playback for short videos to improve loading speed. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Playback speed control | Supports variable speed playback. The audio pitch remains unchanged when the speed is adjusted. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Manual definition switching | Supports switching between multiple definitions for on-demand video streams. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Seamless switching | For Alibaba Cloud live streaming URLs, you can seamlessly switch between live streams of different resolutions during playback (switchStream) to improve user experience. | ✔️ | ✔️ | ✔️ | ❌ | ❌. Seamless switching is supported for HLS and DASH. |
Switch audio tracks | Supports switching between multiple audio tracks for on-demand video streams. | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Screenshot | Supports capturing the current video frame and saving it as a static image. | ✔️ | ✔️ | ✔️ | ✔️ | — |
Lock screen | Supports the screen lock feature, which includes locking screen rotation and hiding UI elements. | ✔️ | ✔️ | ✔️ | ✔️ | — |
External subtitles | Supports importing custom subtitle files. The Web client supports VTT subtitles. Mobile clients support SRT, SSA, ASS, and VTT subtitles. | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️. Supports VTT subtitles. |
Video effects
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Padding | Supports two display modes: fill and crop. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Rotation | Supports setting the video rendering angle to 0, 90, 180, or 270 degrees. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Mirror | Supports three mirror modes: none, horizontal, and vertical. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Thumbnail preview (sprite) | Supports thumbnail previews on the progress bar. | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Brightness adjustment | Supports system brightness adjustment (the UI supports gestures). | ✔️ | ✔️ | ✔️ | ✔️ | — |
Custom player size | Supports custom player width and height. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Picture-in-Picture (PiP) playback | Supports switching to Picture-in-Picture (PiP) mode for playback in a small window. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Audio effects
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Volume adjustment | Supports adjusting the video volume by calling system APIs. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Mute | Supports enabling and disabling the mute feature. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Audio-only playback | Supports playing only the audio from a video file or playing common audio files, such as MP3 and AAC. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Dual-channel audio | Supports playback of dual-channel audio. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Multiple audio tracks | Supports playing video files with multiple audio tracks. You can switch between audio tracks during playback, for example, from English to Chinese. | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Background playback | Supports continued audio playback after the app is switched to the background. | ✔️ | ✔️ | ✔️ | ✔️ | — |
Playback performance
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Retry on playback failure | Automatically retries when playback fails. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Auto-reconnect | Supports auto-reconnect for live streams. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Local cache | Caches subsequent content locally while a video is playing. This is useful for loop playback in short video scenarios and saves user traffic. | ✔️ | ✔️ | ✔️ | ✔️ | — |
Preloading | Uses a sliding window policy to dynamically control video preloading. This significantly improves the first frame loading speed and playback smoothness, ensuring a smooth experience even when scrolling quickly. | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ❌ |
Pre-rendering | Pre-renders the first frame of the next video in the background to reduce black screens and make playback smoother. | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ❌ | ❌ |
Scenario-based multi-instance demo | Provides scenario-based demos for popular scenarios such as short dramas. The demos include the complete source code and feature easy integration, a good interactive experience, and leading technical performance. | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ❌ | ❌ |
Multiple instances | Supports adding multiple players to a single interface for simultaneous playback. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Adaptive bitrate streaming | Supports seamless switching for multi-bitrate HLS and DASH streams. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Dynamic frame synchronization | Supports dynamic frame synchronization for live streams to reduce latency. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Advanced ABR policy | Compared with standard adaptive bitrate (ABR) policies, the advanced ABR policy better adapts to multi-bitrate HLS or DASH video streams. It significantly reduces stuttering and increases the average playback bitrate. | ✔️ (Supported only by the Professional Edition) | ✔️ (Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ✔️(Supported only by the Professional Edition) | ❌ |
Interactive features
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Subtitles | Supports importing custom subtitle files. | ✔️. Supports SRT, SSA, ASS, and VTT subtitles. | ✔️. Supports SRT, SSA, ASS, and VTT subtitles. | ✔️. Supports SRT, SSA, ASS, and VTT subtitles. | ❌. Only subtitle text parsing is supported. | ✔️. Supports VTT subtitles. |
Video security
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Referer blacklists and whitelists | Identifies the request source from the referer field in the playback request. You can use blacklists or whitelists to control access from different sources. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
HLS encryption | Supports the standard AES-128 encryption scheme. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Alibaba Cloud encryption (private) | Supports Alibaba Cloud private encryption for HLS (.m3u8) and MP4 videos. This prevents video leaks and hotlinking. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️. Supported by some browsers. For more information, see Feature compatibility. |
Alibaba Cloud video encryption (private license-based) | Allows direct playback from an encrypted video URL. Compared with standard Alibaba Cloud private encryption, this method provides faster startup and is suitable for cross-region playback services. | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Secure download | Supports downloading and encrypting videos through a unique application. | ✔️ | ✔️ | ✔️ | ✔️ | — |
Commercial DRM | Supports Widevine and Fairplay DRM encryption schemes. | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Quality of service
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Log reporting | Supports reporting ApsaraVideo Player SDK logs and collecting instrumentation data for on-demand video and live streaming playback. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Playback issue tracking | Supports tracking playback history by user or session to identify the cause of playback issues. | ✔️. The Free Edition lets you query data from the last 3 days. | ✔️. The Free Edition lets you query data from the last 3 days. | ✔️. The Free Edition lets you query data from the last 3 days. | ✔️. The Free Edition lets you query data from the last 3 days. | ✔️. The Free Edition lets you query data from the last 3 days. |
Playback data dashboard | Supports monitoring macro data, such as playback volume and the number of playback users. | ✔️. The Free Edition lets you query data from the last 3 days. | ✔️. The Free Edition lets you query data from the last 3 days. | ✔️. The Free Edition lets you query data from the last 3 days. | ✔️. The Free Edition lets you query data from the last 3 days. | ✔️. The Free Edition lets you query data from the last 3 days. |
Developer support
Feature | Description | Android | iOS | Flutter | HarmonyOS | Web |
Rendered data output | Supports outputting PCM and YUV data during rendering. | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
Event callbacks | Supports callbacks for playback status, first frame, playback completion, and playback failure. | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Decoding policy blacklist | Provides a list of device models that do not support hardware decoding, along with optimization support. | ✔️ | ✔️ | ✔️ | ❌ | — |
Network speed display | Supports real-time network speed reporting for the player instance. | ✔️ | ✔️ | ✔️ | ✔️ | Supported only for Real-Time Streaming (RTS). |
UI components | Includes a complete UI that you can use as needed. | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Value-added features
This section describes the value-added features of ApsaraVideo Player SDK, using the Web, Android, iOS, Flutter, and HarmonyOS clients as examples.To use these features, first submit a ticket to apply for and activate the value-added service. ✔️ indicates that the feature is supported. ❌ indicates that the feature is not supported. — indicates that the feature is not applicable to the client.
Feature | Function Overview | Android | iOS | Flutter | HarmonyOS | Web |
H.265/H.266 video playback on the web | Supports playback of video streams that use the H.265 encoding protocol. You can switch between software and hardware decoding. For more information, see Advanced features. Note To play H.265 videos using ApsaraVideo Player SDK for Web, first submit a ticket or contact an Alibaba Cloud business manager to activate the feature. | ❌ | ❌ | ❌ | ❌ | ✔️ |