The Media Transcoding Server (called Alembik) is a Java application providing transcoding services for different media types (image, audio, video, etc). In general server waits for requests containing a list of transcoding jobs. Each job consists of an URL path to a given media resource and a set of parameters according to which the appointed media file should be transformed.

The transcoding parameters depend on the input media type. They may specify e.g. size, dimension, duration and format of the desired output file. Alembik offers two mechanisms of server-side parameterization. The first option is to pass a User-Agent identifier, which will get resolved into a set of parameters according to the requesting device capabilities. In the second a job may be associated with an id of a predefined parameter set, called transcoding profile, whose list is internally maintained by the server.

Once server obtains and validates a request, it starts the transcoding process. The result returned to the requesting party (the client application) is always a response object containing a list of results for all requested transcoding jobs. Generally, each result contains either an URL pointing to the transcoded file location or an error code referring to a reason of the transcoding job failure.

Depending on the assumed mode, the server may wait for completion of transcoding processes before sending a response (synchronous mode) or may immediately return control (asynchronous mode). In the second case the client may ask the server about status and/or result properties (like path or size) of any of its scheduled jobs and then (in the case of a positive reply) reach the output media.

The architecture of Alembik is based and fully compliant with OMA STI (Open Mobile Alliance Standard Transcoding Interface) specification (version 1.0), which may be found here.

The access to the transcoding functionality for Java clients is possible via two distinct ways. The first is the Java Transcoding API with the singleton org.alembik.TranscodingManager class serving as an entry point. The second possibility is to use the JSP Transcoding Tag Library providing support for WAP pages development. Actually, the library components also make use of the TranscodingManager instance underneath.

Based on its actual configuration, the TranscodingManager connects to the server through either RMI calls or SOAP requests. The connection mode is predetermined during the generation of the Transcoding Client Library, which consists of a set of JAR archives built and bundled for a specific client environment.

As for all non-Java clients they may use a direct connection to the transcoding SOAP service or the HTTP servlet-based API.