Zelfstudie: De Video Analyzer voor Media-API gebruiken

Azure Video Analyzer for Media (voorheen Video Indexer) consolideert verschillende ai-technologieën (kunstmatige intelligentie) voor audio en video die door Microsoft worden aangeboden in één geïntegreerde service, waardoor de ontwikkeling eenvoudiger wordt. De API's zijn ontworpen om ontwikkelaars in staat te stellen zich te richten op het gebruik van Media AI-technologieën zonder dat ze zich zorgen hoeven te maken over de schaal, het wereldwijde bereik, de beschikbaarheid en de betrouwbaarheid van cloudplatforms. U kunt de API gebruiken om uw bestanden te uploaden, gedetailleerde video-inzichten te verkrijgen, URL's van insluitbare inzichten en spelerwidgets op te halen, en meer.

Wanneer u een Video Analyzer voor Media-account maakt, kunt u een gratis proefaccount kiezen (waarbij u een bepaald aantal gratis indexeringminuten krijgt) of een betaalde optie (waarbij u niet wordt beperkt door het quotum). Met een gratis proefversie biedt Video Analyzer voor Media websitegebruikers maximaal 600 minuten gratis indexering en tot 2400 minuten gratis indexering voor API-gebruikers. Met een betaalde optie maakt u een Video Analyzer voor Media-account dat is verbonden met uw Azure-abonnement en een Azure Media Services-account. U betaalt voor geïndexeerde minuten. Zie Prijzen van mediaservices voor meer informatie.

In dit artikel wordt beschreven hoe de ontwikkelaars kunnen profiteren van de Video Analyzer voor Media-API.

Abonneren op de API

  1. Meld u aan bij Video Analyzer for Media Developer Portal.

    Bekijk een release-opmerking met betrekking tot aanmeldingsgegevens.

    Meld u aan bij de Video Analyzer for Media Developer-portal

    Belangrijk

    • U moet dezelfde provider gebruiken die u hebt gebruikt toen u zich hebt aangemeld voor Video Analyzer voor Media.
    • Persoonlijke Google- en Microsoft-accounts (Outlook/Live) kunnen alleen worden gebruikt voor proefaccounts. Accounts die gekoppeld zijn met Azure vereisen Azure Active Directory.
    • Er kan slechts één actief account per e-mail zijn. Als een gebruiker zich probeert aan te melden met voor LinkedIn en hoger met voor Google, wordt in het laatste geval een foutpagina weergegeven met de naam dat de user@gmail.com user@gmail.com gebruiker al bestaat.
  2. Abonneer u.

    Selecteer het tabblad Producten. Selecteer vervolgens Autorisatie en abonneer u.

    Tabblad Producten in Video Indexer Developer Portal

    Notitie

    Nieuwe gebruikers worden automatisch geabonneerd op Autorisatie.

    Nadat u zich hebt geabonneerd, kunt u uw abonnement vinden onder Autorisatie -> van producten. Op de abonnementspagina vindt u de primaire en secundaire sleutels. De sleutels moeten beveiligd zijn. De sleutels mogen alleen door uw servercode gebruikt worden. Ze mogen niet beschikbaar zijn aan de clientzijde (.js, .html, etc.).

    Abonnement en sleutels in Video Indexer Developer Portal

Tip

Video Analyzer voor Media-gebruiker kan één abonnementssleutel gebruiken om verbinding te maken met meerdere Video Analyzer voor Media-accounts. U kunt deze Video Analyzer voor Media-accounts vervolgens koppelen aan verschillende Media Services accounts.

Tokens verkrijgen met de Authorization-API

Zodra u zich hebt geabonneerd op de Autorisatie-API, kunt u toegangstokens verkrijgen. Deze toegangstokens worden gebruikt voor verificatie op basis van de Operations-API.

Elke aanroep naar de Operations-API moet worden gekoppeld aan een toegangstoken dat overeenkomt met het autorisatiebereik van de aanroep.

  • Gebruikersniveau: Met toegangstokens op gebruikersniveau kunt u bewerkingen uitvoeren op gebruikersniveau. Hiermee kunt u bijvoorbeeld gekoppelde accounts ophalen.
  • Accountniveau: met toegangstokens op accountniveau kunt u bewerkingen uitvoeren op accountniveau of videoniveau. U kunt bijvoorbeeld een video uploaden, een lijst met alle video's maken, video-inzichten verkrijgen, en meer.
  • Videoniveau: met toegangstokens op videoniveau kunt u bewerkingen uitvoeren op een specifieke video. U kunt bijvoorbeeld video-inzichten verkrijgen, bijschriften downloaden, widgets verkrijgen, en meer.

U kunt het machtigingsniveau van tokens op twee manieren bepalen:

  • Voor accounttokens kunt u de API Toegangstoken voor account met machtigingen krijgen gebruiken en het machtigingstype ( / Lezer-inzender / MyAccessManager-eigenaar) / opgeven.
  • Voor alle typen tokens (inclusief accounttokens) kunt u allowEdit=true/false opgeven. false is het equivalent van een lezermachtiging (alleen-lezen) en waar is het equivalent van een inzendermachtiging (lezen-schrijven).

Voor de meeste server-naar-server-scenario's gebruikt u waarschijnlijk hetzelfde account-token, omdat dit zowel accountbewerkingen als videobewerkingen dekt. Als u echter van plan bent om aanroepen aan de clientzijde te doen naar Video Analyzer voor Media (bijvoorbeeld vanuit JavaScript), kunt u het beste een videotoegang token gebruiken om te voorkomen dat clients toegang krijgen tot het hele account. Dat is ook de reden dat u bij het insluiten van Video Analyzer voor Media-clientcode in uw client (bijvoorbeeld met behulp van Get Insights Widget of Get Player Widget) een videotoegang token moet leveren.

Om het eenvoudiger te maken, kunt u Authorization-API > GetAccounts gebruiken om uw accounts op te halen zonder eerst een gebruikerstoken te verkrijgen. U kunt verzoeken om de accounts op te halen met behulp van geldige tokens, zodat u een extra aanroep om een accounttoken op te halen kunt overslaan.

Toegangstokens verlopen na één uur. Zorg ervoor dat uw token geldig is voordat u de Operations-API gebruikt. Als deze is verlopen, roept u de Autorisatie-API opnieuw aan om een nieuw toegang token op te halen.

U bent klaar om te beginnen met de integratie met de API. Zoek de gedetailleerde beschrijving van elke Video Analyzer voor Media REST API.

Account-id

De parameter Account-id is vereist in alle operationele API-aanroepen. Account-id is een GUID die kan worden verkregen op een van de volgende manieren:

  • Gebruik de website Video Analyzer for Media om de account-id op te halen:

    1. Blader naar de website van Video Analyzer for Media en meld u aan.

    2. Ga naar de pagina Instellingen.

    3. Kopieer de account-id.

      Video Analyzer voor media-instellingen en account-id

  • Gebruik Video Analyzer for Media Developer Portal om programmatisch de account-id op te halen.

    Gebruik de API Account maken.

    Tip

    U kunt de toegangstokens voor de accounts genereren door generateAccessTokens=true te definiëren.

  • Haal de account-id op uit de URL van een pagina van de speler in uw account.

    Wanneer u een video bekijkt, wordt de id weergegeven na de sectie accounts en voor de sectie videos.

    https://www.videoindexer.ai/accounts/00000000-f324-4385-b142-f77dacb0a368/videos/d45bf160b5/
    

Aanbevelingen

In deze sectie vindt u enkele aanbevelingen bij het gebruik van de Video Analyzer voor Media-API.

  • Als u van plan bent om een video te uploaden, is het raadzaam om het bestand op een openbare netwerklocatie te plaatsen (bijvoorbeeld een Azure Blob Storage account). Haal de link naar de video op en geef de URL op als de parameter van het uploadbestand.

    De URL die aan Video Analyzer voor Media wordt verstrekt, moet naar een mediabestand (audio of video) wijzen. Een eenvoudige verificatie voor de URL (of SAS-URL) is om deze in een browser te plakken. Als het bestand begint te afspelen/downloaden, is dit waarschijnlijk een goede URL. Als de browser een visualisatie we weergeven, is dit waarschijnlijk geen koppeling naar een bestand, maar naar een HTML-pagina.

  • Als u de API die video-inzichten ophaalt voor de opgegeven video aanroept, krijgt u gedetailleerde JSON-uitvoer als resultaat. Informatie over de geretourneerde JSON in dit onderwerp.

Codevoorbeeld

In het volgende C#-codefragment wordt het gebruik van alle Video Analyzer voor Media-API's samen gedemonstreerd.

var apiUrl = "https://api.videoindexer.ai";
var accountId = "..."; 
var location = "westus2"; // replace with the account's location, or with “trial” if this is a trial account
var apiKey = "..."; 

System.Net.ServicePointManager.SecurityProtocol = System.Net.ServicePointManager.SecurityProtocol | System.Net.SecurityProtocolType.Tls12;

// create the http client
var handler = new HttpClientHandler(); 
handler.AllowAutoRedirect = false; 
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", apiKey); 

// obtain account access token
var accountAccessTokenRequestResult = client.GetAsync($"{apiUrl}/auth/{location}/Accounts/{accountId}/AccessToken?allowEdit=true").Result;
var accountAccessToken = accountAccessTokenRequestResult.Content.ReadAsStringAsync().Result.Replace("\"", "");

client.DefaultRequestHeaders.Remove("Ocp-Apim-Subscription-Key");

// upload a video
var content = new MultipartFormDataContent();
Debug.WriteLine("Uploading...");
// get the video from URL
var videoUrl = "VIDEO_URL"; // replace with the video URL

// as an alternative to specifying video URL, you can upload a file.
// remove the videoUrl parameter from the query string below and add the following lines:
  //FileStream video =File.OpenRead(Globals.VIDEOFILE_PATH);
  //byte[] buffer = new byte[video.Length];
  //video.Read(buffer, 0, buffer.Length);
  //content.Add(new ByteArrayContent(buffer));

var uploadRequestResult = client.PostAsync($"{apiUrl}/{location}/Accounts/{accountId}/Videos?accessToken={accountAccessToken}&name=some_name&description=some_description&privacy=private&partition=some_partition&videoUrl={videoUrl}", content).Result;
var uploadResult = uploadRequestResult.Content.ReadAsStringAsync().Result;

// get the video id from the upload result
var videoId = JsonConvert.DeserializeObject<dynamic>(uploadResult)["id"];
Debug.WriteLine("Uploaded");
Debug.WriteLine("Video ID: " + videoId);           

// obtain video access token
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", apiKey);
var videoTokenRequestResult = client.GetAsync($"{apiUrl}/auth/{location}/Accounts/{accountId}/Videos/{videoId}/AccessToken?allowEdit=true").Result;
var videoAccessToken = videoTokenRequestResult.Content.ReadAsStringAsync().Result.Replace("\"", "");

client.DefaultRequestHeaders.Remove("Ocp-Apim-Subscription-Key");

// wait for the video index to finish
while (true)
{
  Thread.Sleep(10000);

  var videoGetIndexRequestResult = client.GetAsync($"{apiUrl}/{location}/Accounts/{accountId}/Videos/{videoId}/Index?accessToken={videoAccessToken}&language=English").Result;
  var videoGetIndexResult = videoGetIndexRequestResult.Content.ReadAsStringAsync().Result;

  var processingState = JsonConvert.DeserializeObject<dynamic>(videoGetIndexResult)["state"];

  Debug.WriteLine("");
  Debug.WriteLine("State:");
  Debug.WriteLine(processingState);

  // job is finished
  if (processingState != "Uploaded" && processingState != "Processing")
  {
      Debug.WriteLine("");
      Debug.WriteLine("Full JSON:");
      Debug.WriteLine(videoGetIndexResult);
      break;
  }
}

// search for the video
var searchRequestResult = client.GetAsync($"{apiUrl}/{location}/Accounts/{accountId}/Videos/Search?accessToken={accountAccessToken}&id={videoId}").Result;
var searchResult = searchRequestResult.Content.ReadAsStringAsync().Result;
Debug.WriteLine("");
Debug.WriteLine("Search:");
Debug.WriteLine(searchResult);

// get insights widget url
var insightsWidgetRequestResult = client.GetAsync($"{apiUrl}/{location}/Accounts/{accountId}/Videos/{videoId}/InsightsWidget?accessToken={videoAccessToken}&widgetType=Keywords&allowEdit=true").Result;
var insightsWidgetLink = insightsWidgetRequestResult.Headers.Location;
Debug.WriteLine("Insights Widget url:");
Debug.WriteLine(insightsWidgetLink);

// get player widget url
var playerWidgetRequestResult = client.GetAsync($"{apiUrl}/{location}/Accounts/{accountId}/Videos/{videoId}/PlayerWidget?accessToken={videoAccessToken}").Result;
var playerWidgetLink = playerWidgetRequestResult.Headers.Location;
Debug.WriteLine("");
Debug.WriteLine("Player Widget url:");
Debug.WriteLine(playerWidgetLink);

Resources opschonen

Nadat u klaar bent met deze zelfstudie, verwijdert u resources die u niet van plan bent te gebruiken.

Zie ook

Volgende stappen

  • Details van de uitvoer-JSON bekijken
  • Bekijk de voorbeeldcode die een belangrijk aspect van het uploaden en indexeren van een video laat zien. Als u de code volgt, krijgt u een goed idee van het gebruik van onze API voor basisfunctionaliteiten. Lees de inline opmerkingen en bekijk onze adviezen voor best practices.