Try Azure AI Video Indexer enabled by Arc

Warning

Over the past year, Azure AI Video Indexer (VI) announced the removal of its dependency on Azure Media Services (AMS) due to its retirement. Features adjustments and changes were announced and a migration guide was provided.

The deadline to complete migration was June 30, 2024. VI has extended the update/migrate deadline so you can update your VI account and opt in to the AMS VI asset migration through August 31, 2024.

However, after June 30, if you have not updated your VI account, you won't be able to index new videos nor will you be able to play any videos that have not been migrated. If you update your account after June 30, you can resume indexing immediately but you won't be able to play videos indexed before the account update until they are migrated through the AMS VI migration.

Azure AI Video Indexer enabled by Arc is an Azure Arc extension enabled service that runs video and audio analysis, and generative AI on edge devices. The solution is designed to run on Azure Arc enabled Kubernetes and supports many video formats, including MP4 and other common formats. It supports several languages in all basic audio-related models. It assumes that one Video Indexer resource is mapped to one extension.

This article walks you through the steps required to enable Video Indexer as an Arc extension on your current infrastructure.

Prerequisites

Important

To successfully deploy the Azure AI Video Indexer extension, it is mandatory that your Azure subscription id is approved in advance. You must first sign up using this form.

To use the Video Indexer extension, you need to have an externally facing endpoint, which can be either a DNS name or IP. The endpoint should be set as a secure transfer protocol (https:\\) and is used as the extension API endpoint. It's also used by the Video Indexer web portal to communicate with the extension. It's recommended that you use an ingress control to manage the endpoint.

Note

If the endpoint isn't publicly accessible, you will be able to perform actions on the extension from the web portal only from the local network.

Minimum hardware requirements for this quickstart

This quickstart is designed to allow you to see the extension in action, so smaller resource sizes have been chosen for you to work with in a test environment. For this quickstart, the minimum hardware requirements are:

  • CPU: 16 cores
  • Memory: 16 GB

For the minimum hardware requirements in a production environment, see the Minimum hardware requirements in the overview article.

Minimum software requirements

Component Minimum Requirements
Operating System Ubuntu 22.04 LTS or any Linux Compatible OS
Kubernetes 1.26
Azure CLI 2.48.0

Parameter definitions

Parameter  Default  Description
release-namespace  yes The Kubernetes namespace that the extension is installed into
cluster-name The Kubernetes Azure Arc instance name
resource-group The Kubernetes Azure Arc resource group name
version  yes  Video Indexer Extension version, leave empty for latest
speech.endpointUri Speech Service Url Endpoint (link)
speech.secret  Speech Instance secret (link)
translate.endpointUri  Translation Service Url Endpoint (link)
translate.secret  Translation Service secret (link)
ocr.endpointUri OCR Service Url Endpoint (link)
ocr.secret OCR Service secret (link)
videoIndexer.accountId Video Indexer Account ID
videoIndexer.endpointUri  Dns Name or IP to be used as the extension external endpoint.

Prepare for deployment

During the deployment, the script asks for environment specific values. Have these values ready so you can copy and paste them when the script asks for them.

Question Value Details
What is the Video Indexer account ID during deployment? GUID Your Video Indexer Account ID
What is the Azure subscription ID during deployment? GUID Your Azure Subscription ID
What is the name of the Video Indexer resource group during deployment? string The Resource Group Name of your Video Indexer Account
What is the name of the Video Indexer account during deployment? string Your Video Indexer Account name

Deploy with the Azure portal

  1. In the Azure portal, navigate to your Azure Arc-connected cluster.
  2. From the menu, select Extensions > + Add > Azure AI Video Indexer Arc Extension.
  3. Select Create. The Create an AI Video Indexer extension screen will appear.
  4. Configure the extension in Instance details:
    1. Select the subscription and resource group for your extension.
    2. Select the region and connected k8 cluster.
    3. Enter a name for your extension.
    4. Select the Azure AI Video Indexer Account that the extension will be connected to.
    5. Enter the cluster endpoint, either an IP or DNS Name to be used as the API endpoint.
    6. Provide the storage class you want to use for the extension that's supported by your Kubernetes distribution. For example, if you're using AKS, you could use azurefile-cli. For more information on predefined storage classes supported by AKS, see Storage Classes in AKS. If you're using other Kubernetes distributions, see your Kubernetes distribution documentation for predefined storage classes supported or the way you can provide your own.
    7. Select a generative AI model to apply AI capabilities such as textual summarization on edge. Learn more about generative AI models.
  5. Select Review + create and then Create.

Manual deployment

Use the sample deployment script to manually deploy the extension. Before you get started here are some things to keep in mind:

  • Storage class - Video Indexer extension requires that a storage volume must be available on the Kubernetes cluster. The storage class needs to support ReadWriteMany. It's important to note that the indexing process is IO intensive, so the IOPS (input/output operations per second) of the storage volume will have a significant impact on the duration of the process.
  • Managed AI resources - Some Azure AI resources (Translator, Transcription, and OCR) will be created on the Microsoft tenant. These resources are for your subscription only and are under a pay-as-you-go model. If you already have an AI Video Indexer Arc-enabled resource in your subscription, it will be associated with existing Azure AI resources.

Important

If you are using a language model, you must label a node or a node pool with "workload:summarization". The label is a key-value pair, the key is "workload", and the value is "summarization". The machine labelled with this label must have at least 32 CPUs (for production), and we strongly recommend that they are Intel CPUs (as opposed to AMD).

Tip

Follow the article how to connect your cluster to Azure Arc on Azure Docs for a complete walkthrough of this process.

Optional configuration

The extension default settings are set to handle the common workloads, for specific cases, the following parameters can be used to configure the resource allocation:

Parameter Default Description
AI.nodeSelector - The node Selector label on which the AI Pods (speech and translate) are assigned to
speech.resource.requests.cpu 1 The requested number of cores for the speech pod
speech.resource.requests.mem 2Gi The requested memory capacity for the speech pod
speech.resource.limits.cpu 2 The limits number of cores for the speech pod. must be > speech.resource.requests.cpu
speech.resource.limits.mem 3Gi The limits memory capacity for the speech pod. must be > speech.resource.requests.mem
translate.resource.requests.cpu 1 The requested number of cores for the translate pod
translate.resource.requests.mem 16Gi The requested memory capacity for the translate pod
translate.resource.limits.cpu -- The limits number of cores for the translate pod. must be > translate.resource.requests.cpu
translate.resource.limits.mem -- The limits memory capacity for the translate pod. must be > translate.resource.requests.mem
videoIndexer.webapi.resources.requests.cpu 0.5 The request number of cores for the web API pod
videoIndexer.webapi.resources.requests.mem 4Gi The request memory capacity for the web API pod
videoIndexer.webapi.resources.limits.cpu 1 The limits number of cores for the web API pod
videoIndexer.webapi.resources.limits.mem 6Gi The limits memory capacity for the web API pod
videoIndexer.webapi.resources.limits.mem 6Gi The limits memory capacity for the web API pod
storage.storageClass "" The storage class to be used
storage.useExternalPvc false determines whether an external PVC is used. if true, the VideoIndexer PVC isn't installed

Deploy with ARM or Bicep

You can deploy Azure AI Video Indexer enabled by Arc with an ARM template or Bicep. See the Samples repo README for detailed instructions.