Images and the Dynamic Ingest API

Product(s)
Video Cloud
Role(s)
API Developer
Task(s)
Add Videos/Assets
Topic(s)
Images
API(s)
Dynamic Ingest API

This topic explains how to ingest or capture images for a video.

Introduction

You can ingest images of six types to associate with Video Cloud videos:

poster
The poster image is displayed in the Brightcove Player before the user plays the video. It is typically a frame captured from the video, but does not have to be.
thumbnail
The thumbnail image is displayed in playlists, end screens, and so forth. It is typically a frame captured from the video, but does not have to be.
portrait
An image used typically as a poster in portrait mode on phones and other devices. Required for Brightcove Beacon. Details of the specification are in the table below.
square
An image used typically as a channel logo or in grid displays. Required for Brightcove Beacon. Details of the specification are in the table below.
wide
An image used typically as a poster in landscape mode on phones and other devices. Required for Brightcove Beacon. Details of the specification are in the table below.
ultra-wide
An image used typically as a poster on ultra-wide displays such as TVs. Required for Brightcove Beacon. Details of the specification are in the table below.

Specifications

The table below provides specifications for images.

Image Details Table
Type Format Aspect Ratio (W/H) Minimum Width (pixels)
poster jpg or png match video none
thumbnail jpg or png match video none
portrait jpg or png 0.6667 (2x3) 500
square jpg or png 1.0 (1x1) 500
wide jpg or png 1.7778 (16x9) 2000
ultra-wide jpg or png 2.3333 21x9 2000

There are two different ways to add basic poster and thumbnail images to your videos using the Dynamic Ingest API:

  • Capture images at the mid-point of the video during transcoding
  • Ingest your own images, either at the same time you ingest the video, or separately

 

Setup

The setup for Dynamic Ingest requests is the same, whether you are ingesting a video, images, a WebVTT file, or all of these:

Request URL
    https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
Authentication
Authentication requires an access token passed as a Bearer token in an Authorization header:
    Authorization: Bearer {access_token}

 

Note on S3

If your images will be pulled from a protected S3 bucket, you will need to set a bucket policy to allow Video Cloud to access the files. See Using Dynamic Ingest with S3 for details.

 

Multilingual variants

You can provide different versions of images to be used for different languages. This is handled by Brightcove Beacon for Brightcove Beacon apps. General implementation in the Brightcove Player currently requires custom development.

The language for an image is specified in the language property detailed in the next section.

 

Ingest images

Here are the details of adding custom images for your video.

Image fields in the request body

Images in the ingest request body are specified as an array of objects. The object properties are detailed in the following table.

Image Object Properties
Property Description Type Required Example
url A url that Video Cloud can retrieve the image from string Yes https://mysite.com/videos/video123/images/poster.png
language Language code for the image from the subtags in http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry (default can be set for the account by contacting Brightcove Support) string No  
variant The type for this image: poster | thumbnail | portrait | square | wide | ultra-wide string Yes wide
height   number No 2160
width   number No 3840
{
      "images":[
        {
            "url":"https://solutions.brightcove.com/bcls/assets/images/great-blue-heron-poster.png",
            "variant": "poster",
            "height": 1080,
            "width": 1920
        },
        {
            "url":"https://solutions.brightcove.com/bcls/assets/images/great-blue-heron-thumbnail.png",
            "variant": "thumbnail",
            "height": 108,
            "width": 292
        },
        {
            "url":"https://solutions.brightcove.com/bcls/assets/images/great-blue-heron-thumbnail.png",
            "language": "de",
            "variant": "square",
            "height": 570,
            "width": 570
        },
        {
            "url":"https://solutions.brightcove.com/bcls/assets/images/Tiger.jpg",
            "language": "fr",
            "variant": "wide",
            "height": 1440,
            "width": 2560
        },
        {
            "url":"https://solutions.brightcove.com/bcls/assets/images/Water.jpg",
            "language": "es",
            "variant": "portrait",
            "height": 1200,
            "width": 800
        },
        {
            "url":"https://solutions.brightcove.com/bcls/assets/images/Sea%20Marvels.jpg",
            "language": "hi",
            "variant": "ultra-wide",
            "height": 1646,
            "width": 3840
        }
      ]
    }

 

Automatic resizing

When you add custom poster and/or thumbnail images via Studio or the Dynamic Ingest API, by default Video Cloud will resize these to match the image sizes defined in the default Ingest Profile for the account.

Note that resizing and padding are the only modifications Video Cloud or Brightcove Beacon. Images are never cropped.

Override auto-resizing

If you want to override this behavior and have Video Cloud retain actual image dimensions, follow these steps:

  1. Create a new custom ingest profile for your account (or modify an existing custom profile)
  2. Include image renditions for the post and thumbnail that have exactly these width and height values:
        {
          "media_type": "image",
          "format": "jpg",
          "label": "poster",
          "width": 9999,
          "height": 9999
        },
        {
          "media_type": "image",
          "format": "jpg",
          "label": "thumbnail",
          "width": 9999,
          "height": 9999
        }
  3. Make this the default profile for the account if you always want images to be saved with their original sizes.

Now when you add custom images via Studio or Dynamic Ingest, they will have the original dimensions of the source images.

 

Capture images

During transcoding, Video Cloud can capture a snapshot from the video at the midpoint and save this as poster and thumbnail images.

For custom ingest profiles, image capture requires that two special renditions be added to the ingest profile that you are using. See Images in ingest profiles below.

You should also set the capture-images flag in your request data to true if you want the poster and thumbnail to be captured from the video during transcoding, but this is the default value if the selected profile includes image renditions. (If there are no image renditions in the profile, the default for capture-images is false.)

Sample request data:

      {
        "master": { "url": "http://learning-services-media.brightcove.com/videos/mp4/Bird_Titmouse.mp4" },
        "profile": "multi-platform-standard-static",
        "capture-images": true
      }

 

Images in ingest profiles

Here are details of how image renditions are specified in ingest profiles.

Property Value
media_type "image"
label "poster" or "thumbnail" (you need a rendition for each)
format "png" or "jpg"
width number (pixels)
height number (pixels)

Here is sample data for the two renditions:

            {
              "media_type": "image",
              "format": "jpg",
              "label": "poster",
              "width": 1280,
              "height": 720
            },
            {
              "media_type": "image",
              "format": "jpg",
              "label": "thumbnail",
              "width": 160,
              "height": 90
            }

Limitations

  • The ingestion system does not allow concurrent jobs on the same video. Therefore, if you attempt to upload images while the video is being ingested or retranscoded, the image upload will fail.