Ingest, encode/transcode videos utilizing technologies such as CMAF (DRM supported)

Encoding Service

Axinom Encoding is a video ingestion and processing service. It allows to easily create video on demand (VoD) content from various source video formats. The service combines strong security and powerful transcoding capabilities wrapped into a simple HTTP-based API.

The core features of the Encoding Service are:

  • Support for many source video, audio, and subtitles formats

  • Codecs: H.264 (AVC), H.265 (HEVC), AAC

  • Packaging: DASH, HLS, and CMAF for adaptive streaming

  • Ability to acquire and publish files from/to many different storage types, such as FTPS, Amazon S3 or Azure Blob Storage

  • DRM protection using Widevine, PlayReady, and FairPlay

  • Direct integration with Axinom DRM Key Service.

Encoding Service integrates seamlessly with Axinom DRM. However, thanks to the support of the industry standards (such as CPIX), it can be used with any other DRM supplier as well.


Encoding Service is a managed service (SaaS). It is fully stateless and uses a pattern of jobs.

Encoding Overview
Figure 1. Axinom Encoding Overview

A typical client interaction with the Encoding Service looks like this:

  • Client sets up an input storage and uploads the source video material there. The Encoding Service will take the video from the input storage.

  • Client sets up an output storage where the Encoding Service shall store the processed output.

  • Client sets up a message queue to which the Encoding Service shall send the job progress messages.

  • Client creates a job definition (JSON) which tells the Encoding Service what exactly to do with the video. The job definition also contains the pointers to the input/output storages and to the message queue.

  • Client submits the job definition to the Encoding API.

  • Client observes the messages arriving to the message queue until the job’s completion (success/error).

  • Client downloads the produced results from the output storage (unless the output storage is directly used as an origin for the video distribution).

An encoding job is a long-running process (can take minutes and even hours).

When a job is submitted, the service performs a validation of the request body (JSON). It also extracts, decrypts, and validates the supplied Content Keys for encryption, or, in the DRM Managed Mode, acquires the necessary keys from the Key Service. It returns to the client a response containing the assigned JobID and the ID(s) of the Content Keys which will be used for encryption.

ClientInput_StorageEncoding_APIEncoding_ServiceKey_ServiceMessage_PublisherUpload contentSet up & ListenJob InitiationPOST /Jobvalidate requestacquire content keyscontent keysjob ID, keyIDsstart job executionjob progress events (periodically)Success or FinalError eventJob CancellationPOST /Job/<job_id>/canceljob statusJob StatusGET /Reporting/<job_id>job status
Figure 2. Request Processing


Encoding API

  • API Reference - detailed definition of the application programming interface (API)

Data Model

Storage Providers

For accessing external storage, e.g. input/output storage, the Encoding Service uses the concept of a Storage Provider. The following Storage Providers are supported:


Any FTPS server


Amazon S3


Azure Blob Storage

Configuration of a Storage Provider occurs with the following parameters:

    "Provider": "Ftps",
    "UriPath": "ftpes://",
    "CredentialsName": "user",
    "CredentialsSecret": "pass",
    "CredentialsProtection": "Unencrypted"

The exact interpretation of the "UriPath", "CredentialsName", and "CredentialsSecret" depends on the Storage Provider. See more details under Storage Providers.

To pass the value of "CredentialsSecret" in an encrypted form when using the Credentials Protection set the "CredentialsProtection" to "Encrypted".


The Encoding Service supports languages encoded with 2 or 3 letter codes according to ISO-639. View the full list of Supported Languages as a reference.

The mapping of the input files to the languages can be done implicitly or explicitly. See the [Media Mapping] Phase for more details.

If an unsupported language is provided, the Encoding Service will still use it and include it in the stream description in the manifest and in the file names, but some features may not be available. For example, the language name will not be detected and included.

Subtitles & Closed Captions

The Encoding Service supports subtitles and closed captions (CC). Technically, they are the same. The difference is more in their purpose.

HTML5 defines subtitles as a "transcription or translation of the dialog when sound is available but not understood" by the viewer (for example, dialog in a foreign language) and captions as a "transcription or translation of the dialog, sound effects, relevant musical cues, and other relevant audio information when sound is unavailable or not clearly audible" (for example, when audio is muted or the viewer is deaf or hard of hearing).

The input formats supported for the subtitles and closed captions are:

Regardless of the input format, the Encoding Service translates all subtitles and closed captions to WebVTT, as suggested by the DASH standard.

All input files shall be provided in UTF-8.

The formatting inside the WebVTT files is taken over as-is. For all other formats, only the time indexes and the text is taken over; no format-specific formatting instructions.


Encoding Service can be used purely via an API. But it also offers a GUI as a part of Mosaic Management System. With this GUI you can:

  • Create profiles for acquisition, publishing, processing

  • Select videos from your input storage

  • Start an encoding job

  • Monitor the progress of an encoding job

  • See the properties of an encoded video.

It also offer a frontend-extension for selecting a video. Other services, such as Media Service use this extension to assign a video to a movie or to an episode.

Videos Overview
Figure 3. Videos Overview


The Encoding Service provides credentials protection every time that secrets are passed to the Encoding API. Moreover, as a stateless service, the Encoding Service only maintains the log files, not the output content. It could also remove the source files if you activate that option. Learn more about security from the security section.


When you use the Encoding API directly, you pass all the necessary configuration as a part of a job request.

To be able to use the GUI, you need to configure the profiles first. You do this in the Management System under Settings:

Encoding settings
Figure 4. Encoding Settings

See Set up Encoding Profiles for more details.


The service is billed per output minute, the price depends on the codec (H.264, H.265) and quality group (SD, HD, UHD1, UHD2). See Encoding Pricing and Encoding Billing for more details.