Using Zencoder with Google Cloud Storage

This topic explains the setup for using Zencoder on the Google Cloud Platform.

Google Cloud Storage Setup

Follow the steps below to use Zencoder on the Google Cloud Platform.

  1. Go to Cloud Storage settings and click on the Interoperability tab:
    Interoperability Tab
    Interoperability Tab
  2. In the User account HMAC select your project as default and click on Create Key:
    Create Access Key
    Create Access Key
  3. Save the Access Key and Secret to enter in Zencoder later.
  4. Add a new principal on the permission at bucket level for allAuthenticatedUsers with Storage Object Viewer role. You need to activate the public to internet option.
    Add New Prinical
    Add New Prinical
  5. Add the Access Key and Secret to Zencoder in the Credentials section of the Zencoder Dashboard:
    Enter Credentials in Zencoder
    Enter Credentials in Zencoder

Transcoding

The example below shows a working job which pulls an input video from GCS, creates renditions for HTTP Live Streaming, and sends the output streams to GCS. You can test this out by changing my-bucket to an existing GCS bucket that you own and pasting this into the Request Builder.

Example HLS Job Using GCS

  {
      "test": true,
      "input": "gcs://zencoder-testing/test.mov",
      "output": [
      {
          "audio_bitrate": 64,
          "audio_sample_rate": 22050,
          "base_url": "gcs://my-bucket/",
          "filename": "file-64k.m3u8",
          "segment_seconds": 2,
          "format": "aac",
          "headers":{
              "x-goog-acl": "public-read"
          },
          "type": "segmented"
      },
      {
          "audio_bitrate": 56,
          "audio_sample_rate": 22050,
          "base_url": "gcs://my-bucket/",
          "decoder_bitrate_cap": 360,
          "decoder_buffer_size": 840,
          "filename": "file-240k.m3u8",
          "segment_seconds": 2,
          "max_frame_rate": 15,
          "type": "segmented",
          "video_bitrate": 184,
          "headers":{
              "x-goog-acl": "public-read"
          },
          "width": 400,
          "format": "ts"
      },
      {
          "audio_bitrate": 56,
          "audio_sample_rate": 22050,
          "base_url": "gcs://my-bucket/",
          "decoder_bitrate_cap": 578,
          "decoder_buffer_size": 1344,
          "filename": "file-440k.m3u8",
          "segment_seconds": 2,
          "type": "segmented",
          "video_bitrate": 384,
          "headers":{
              "x-goog-acl": "public-read"
          },
          "width": 400,
          "format": "ts"
      },
      {
          "audio_bitrate": 56,
          "audio_sample_rate": 22050,
          "base_url": "gcs://my-bucket/",
          "decoder_bitrate_cap": 960,
          "decoder_buffer_size": 2240,
          "filename": "file-640k.m3u8",
          "segment_seconds": 2,
          "type": "segmented",
          "video_bitrate": 584,
          "headers":{
              "x-goog-acl": "public-read"
          },
          "width": 480,
          "format": "ts"
      },
      {
          "audio_bitrate": 56,
          "audio_sample_rate": 22050,
          "base_url": "gcs://my-bucket/",
          "decoder_bitrate_cap": 1500,
          "decoder_buffer_size": 4000,
          "filename": "file-1040k.m3u8",
          "segment_seconds": 2,
          "type": "segmented",
          "video_bitrate": 1000,
          "headers":{
              "x-goog-acl": "public-read"
          },
          "width": 640,
          "format": "ts"
      },
      {
          "audio_bitrate": 56,
          "audio_sample_rate": 22050,
          "base_url": "gcs://my-bucket/",
          "decoder_bitrate_cap": 2310,
          "decoder_buffer_size": 5390,
          "filename": "file-1540k.m3u8",
          "segment_seconds": 2,
          "type": "segmented",
          "video_bitrate": 1484,
          "headers":{
              "x-goog-acl": "public-read"
          },
          "width": 960,
          "format": "ts"
      },
      {
          "audio_bitrate": 56,
          "audio_sample_rate": 22050,
          "base_url": "gcs://my-bucket/",
          "decoder_bitrate_cap": 3060,
          "decoder_buffer_size": 7140,
          "filename": "file-2040k.m3u8",
          "segment_seconds": 2,
          "type": "segmented",
          "video_bitrate": 1984,
          "headers":{
              "x-goog-acl": "public-read"
          },
          "width": 1024,
          "format": "ts"
      },
      {
          "base_url": "gcs://my-bucket/",
          "filename": "playlist.m3u8",
          "streams": [
          {
              "bandwidth": 2040,
              "path": "file-2040k.m3u8"
          },
          {
              "bandwidth": 1540,
              "path": "file-1540k.m3u8"
          },
          {
              "bandwidth": 1040,
              "path": "file-1040k.m3u8"
          },
          {
              "bandwidth": 640,
              "path": "file-640k.m3u8"
          },
          {
              "bandwidth": 440,
              "path": "file-440k.m3u8"
          },
          {
              "bandwidth": 240,
              "path": "file-240k.m3u8"
          },
          {
              "bandwidth": 64,
              "path": "file-64k.m3u8"
          }
          ],
          "headers":{
              "x-goog-acl": "public-read"
          },
          "type": "playlist"
      }
      ]
  }