Inaris HLS Media Player
HTTP live streaming (HLS) is the most popular streaming format for OTT streaming services. With our HLS Media Player, we provide a high-efficient and robust solution for HLS media playback. The HLS Media Player uses our Inaris Media Player core component for a unified media playback.
The Inaris HLS Media Player uses the Inaris Media Player. For playback of HLS streams, the Inaris HLS Media Source component is registered with the Inaris Media Player framework as a media source. The HLS Media Source handles all IP communication with the HLS streaming server and the processing of the HLS master playlist, media playlists and media segments.
- Application uses the unified API of the Media Player to playback the HLS content.
- HLS Media Source handles all HLS specific data. It downloads the HLS master playlist, the media playlists and all media segments that contain the media content. The HLS Media Source is also responsible for handling the adaptive bitrate. The received media data is passed to the Media Player.
- Verimatrix DRM is used by the HLS Media Source for content protected with the Verimatrix DRM system.
- HTTP Client is used by the HLS Media Source for downloading the media playlists and the media segments via HTTP.
- Media Player is the core component for all media playback. It provides a unified API to the application independent of the used media source. The Inaris Media Player receives the media streams from the Inaris HLS Media Source and uses the appropriate audio/video decoder for playback of the received HLS media segments.
- Abstraction Layer allows porting the HLS Media Player to different hardware platforms and operating systems.
The HLS Media Player supports start/stop, pause/resume, seek to a playback position and retrieve the current position. Support for trick-mode playback (fast forward/backwards) based on iframe segments is in preparation.
The audio formats AAC, AC3, HE-AAC, EAC3 are supported, depending on the media codecs supported by the platform. Audio can be part of a multiplex or provided as a separate stream (HLS alternate renditions). All transport stream-based video formats supported by the platform are supported, including UHD and HDR.
The HLS standard defines WebVTT and closed caption subtitle formats. The HLS media segments containing subtitle content are passed to a separate subtitle decoder via (local) TCP/IP connection. For Android devices, a WebVTT subtitle decoder can be provided with the HLS Player.
The HLS Media Player supports adaptive bitrate streaming. For each downloaded segment the available bandwidth is measured and depending on the available bandwidth the appropriate audio or video stream variant is selected.
The HLS Media Player is completely implemented in C. The full performance of the underlying platform decoder is used. As an example, on Broadcom platforms, the received media segments are directly passed to the Nexus drivers for the highest performance. On the Android platform, the high performance is a clear advantage compared to using the ExoPlayer.
The HLS Media Source starts passing the media content to the decoder already when only a fraction of the first media segment has been received. This allows ultra-fast start-up of media playback and positioning/skipping.
With IP connections there can always be problems and interruptions. The Inaris HLS Player handles all of the typical situations in a robust way. For example, when any data cannot be downloaded because the IP connection was interrupted, automatic retries are started until the connection may eventually be available again and media playback can continue.
The abstraction layer allows porting the Inaris HLS Media Player to different platforms in a short time. The Inaris HLS Media Player has already been ported to Broadcom (Linux and Android), HiSilicon and MStar platforms. Porting to other platforms is possible, e.g. Amlogic (Linux and Android) and Montage.
The Inaris HLS Media Player is integrated and tested with Verimatrix ViewRight OTT DRM (ViewRight Web Client) for standard security. Other DRM systems can be integrated in a similar way using the decryption interface.
Media playback is a complex system. In case of a problem, the cause can be on the client-side, in the home network, the IP connection, but also on the streaming server-side. To find the root cause of a problem can be difficult. Therefore, logs are of major importance for finding errors in the field.
The logs generated by the Inaris HLS Media Player can be sent continuously to the cloud using the Google Cloud Pub/Sub service. This allows seamless integration of the HLS Media Player with state-of-the-art analytics tools like Google BigQuery and Data Studio.