Overview of the Transcoder API

This page provides a technical overview of the Transcoder API, including features, terminology, and useful concepts. The Transcoder API implements a REST and RPC API that lets you submit, monitor, and manage transcoding jobs in Google Cloud. To submit jobs using the Transcoder API, you first upload media assets to Cloud Storage. After processing a job, the Transcoder API saves the resulting media back to Cloud Storage.


The Transcoder API includes support for the following features:

For more information about the MP4 and MPEG-DASH standards, see The Moving Picture Experts Group website. For more information about the HLS standard, see HTTP Live Streaming.

Supported inputs and outputs

The following table shows the supported input and output formats for the Transcoder API.

ContainersAVI, GXF, MKV (Matroska), MOV, MPEG2-TS, MP4, MXF (OP1A only), WMV
Video CodecsDNxHD, DV/DVCProHD, DV25, DV50, H.261, H.262, H.263, H.264 (AVC), H.265 (HEVC), MPEG-1, MPEG-2, MPEG-4 part 2, ProRes, Theora, VC-1, VP8, VP9, XDCAM
Audio CodecsAAC, AC3, AIFF, E-AC3, MP3, Opus, PCM, WAV, WMA, WMA2, Vorbis
CaptionsSCC, SRT, VTT
ContainersApple HLS (with MPEG2-TS, fMP4), MPEG-DASH (with fMP4), MP4
Video CodecsH.264 (AVC), H.265 (HEVC), VP9
Audio CodecsAAC-HE, AAC-HEv2, AAC-LC, AC3, E-AC3, MP3
CaptionsCEA-608/708, WebVTT
ImagesJPG tiles, single images

Supported containers for content encryption

The following table shows the containers that are supported for content encryption.

Type Technology Format Video Codecs Audio Codecs
H.264 H.265 AAC
DRM Widevine, PlayReady DASH fMP4 (MPEG-CENC) fMP4 (MPEG-CENC)
DRM Widevine, PlayReady HLS fMP4 (MPEG-CENC) fMP4 (MPEG-CENC)
Content protection AES-128 HLS, DASH fMP4, TS (AES-128) fMP4, TS (AES-128) fMP4, TS (AES-128)


The Transcoder API security model is based on Google's Identity and Access Management. IAM's fine-grained permissions give you control over what can be done with media data, and by whom.

Concepts and terminology

This section provides a glossary of useful terms for working with the Transcoder API.

Ad break

An ad break is a short advertisement that appears before or during media playback. The Transcoder API supports an ad break keyframe in the job configuration. The Transcoder API does not insert or play ads, or stop media playback; video player clients are responsible for handling the keyframe.


An atom is a foundational data structure for defining a video's metadata and location. A video can comprise a complex nested hierarchy of different types of atoms, including audio, edit, and text atoms.

Audio atom

An audio atom maps the audio from an elementary stream to an edit list.

Codec type and profile

When selecting the codec for a video stream, you can specify the codec type, such as H.264 and the profile, such as the default high profile.


A container is a wrapper that describes the relationship between the various components in a multiplexed stream, including media files and metadata. The Transcoder API supports the MP4, MPEG-DASH, and HLS container formats.

Edit atom

An edit atom defines the start and end offsets for the individual segments of a stream that you want to combine in an edit list.

Edit list

An edit list defines a sequence of edits as a timeline for the resulting file or manifest from a transcoding job.

Elementary stream

An elementary stream is an encoding of an input file, such as an audio, video, or caption text track. You must package elementary streams before mapping and sharing the stream to different output formats.

Entropy encoding

Entropy encoding is a form of lossless compression that the Transcoder API supports. When configuring jobs, you can specify either the Context-Adaptive Variable-Length Coding (CAVLC) or Context-Adaptive Binary Arithmetic Coding (CABAC) entropy coders.


A job is the basic unit for managing work with the Transcoder API. When you submit a job to the Transcoder API, it is processed in a geographic location known as a region. You can list and manage all jobs for a region.

Job configuration

A job configuration represents many of the various settings you can customize when creating and submitting a job to the Transcoder API. You can specify configuration settings such as edit lists and where to insert ad break tags in an output manifest. You can create reusable job configurations as job templates for use in a Google Cloud region.

Job template

By default, the Transcoder API applies a preset template called preset/web-hd for populating a job configuration. You can create and manage your own custom job templates and specify them when creating jobs.


Preprocessing is the stage of a job that takes place prior to the main transcoding. When configuring the preprocessing stage, you can apply filters such as color, denoising, and deblocking. Deblocking can help reduce block artifacts as a result of compression.

Preprocessing configuration

A preprocessing configuration represents the settings for filters you can apply to a video before the transcoding stage of a job. You can apply a variety of filters including color saturation, deblocking, and denoising.

Rate control mode

The rate control mode indicates whether to process a job using either the constant rate factor (CRF) or variable bitrate (VBR) modes. CRF ensures constant quality throughout the processed media assets. VBR optimizes the encoding process to reduce the file size of the processed media assets. For streaming use cases, select the VBR rate control mode. For archival purposes, select the CRF rate control mode.


A manifest is a description of the available contents and metadata of an adaptive media stream to a client. In the Transcoder API, you can configure a job to output a manifest with a file name, a list of multiplexed streams, as well as the type of the manifest, which must be either HLS or MPEG-DASH.

Text atom

A text atom maps the text from an elementary stream to an edit list.

Text stream

A text stream encodes text data associated with a video, such as closed captions or subtitles.

What's next