Zelfstudie: de Video Indexer-API gebruikenTutorial: Use the Video Indexer API

Video Indexer consolideert diverse AI-technologieën (audio en video kunst matige intelligentie) die door micro soft worden aangeboden in één geïntegreerde service, waardoor ontwikkeling eenvoudiger wordt.Video Indexer consolidates various audio and video artificial intelligence (AI) technologies offered by Microsoft into one integrated service, making development simpler. De Api's zijn zodanig ontworpen dat ontwikkel aars zich kunnen richten op het gebruik van media AI-technologieën zonder dat u zich zorgen hoeft te maken over schaal, wereld wijd bereik, Beschik baarheid en betrouw baarheid van Cloud platforms.The APIs are designed to enable developers to focus on consuming Media AI technologies without worrying about scale, global reach, availability, and reliability of cloud platforms. U kunt de API gebruiken om uw bestanden te uploaden, gedetailleerde video inzichten te verkrijgen, Url's van een Inge sloten Insight-en speler-widgets op te halen en meer.You can use the API to upload your files, get detailed video insights, get URLs of embeddable insight and player widgets, and more.

Wanneer u een Video Indexer account maakt, kunt u kiezen voor een gratis proef account (waarbij u een bepaald aantal minuten voor de indexering krijgt) of een betaalde optie (waarbij u niet beperkt bent door het quotum).When creating a Video Indexer account, you can choose a free trial account (where you get a certain number of free indexing minutes) or a paid option (where you're not limited by the quota). Met een gratis proef versie biedt Video Indexer tot 600 minuten gratis indexering voor website gebruikers en tot 2400 minuten gratis indexering naar API-gebruikers.With a free trial, Video Indexer provides up to 600 minutes of free indexing to website users and up to 2400 minutes of free indexing to API users. Met een betaalde optie maakt u een Video Indexer-account dat is verbonden met uw Azure-abonnement en een Azure Media Services-account.With a paid option, you create a Video Indexer account that's connected to your Azure subscription and an Azure Media Services account. U betaalt zowel voor de geïndexeerde minuten als voor kosten verbonden aan het Azure Media Services-account.You pay for minutes indexed as well as the Azure Media Services account related charges.

In dit artikel wordt uitgelegd hoe ontwikkelaars kunnen profiteren van de Video Indexer-API.This article shows how the developers can take advantage of the Video Indexer API.

Abonneren op de APISubscribe to the API

  1. Meld u aan bij de Video Indexer-ontwikkelaarsportal.Sign in to Video Indexer Developer Portal.

    Aanmelden bij Video Indexer ontwikkelaars Portal

    Belangrijk

    • U moet dezelfde provider gebruiken als voor het aanmelden bij Video Indexer.You must use the same provider you used when you signed up for Video Indexer.
    • Persoonlijke Google-en micro soft-accounts (Outlook/Live) kunnen alleen worden gebruikt voor proef accounts.Personal Google and Microsoft (Outlook/Live) accounts can only be used for trial accounts. Accounts die gekoppeld zijn met Azure vereisen Azure Active Directory.Accounts connected to Azure require Azure AD.
    • Er kan slechts één actief account per e-mail zijn.There can be only one active account per email. Als een gebruiker zich probeert aan te melden met user@gmail.com voor LinkedIn en later met user@gmail.com voor Google, wordt er een fout pagina weer gegeven met de melding dat de gebruiker al bestaat.If a user tries to sign in with user@gmail.com for LinkedIn and later with user@gmail.com for Google, the latter will display an error page, saying the user already exists.
  2. Abonneer u.Subscribe.

    Selecteer het tabblad producten . Selecteer vervolgens autorisatie en abonneren.Select the Products tab. Then, select Authorization and subscribe.

    Het tabblad producten in Video Indexer ontwikkelaars Portal

    Notitie

    Nieuwe gebruikers worden automatisch geabonneerd op Autorisatie.New users are automatically subscribed to Authorization.

    Zodra u zich hebt geabonneerd, kunt u uw abonnement en de primaire en secundaire sleutels bekijken.Once you subscribe, you can see your subscription and your primary and secondary keys. De sleutels moeten beveiligd zijn.The keys should be protected. De sleutels mogen alleen door uw servercode gebruikt worden.The keys should only be used by your server code. Ze zijn niet beschikbaar voor de client zijde (. js,. html, enzovoort).They shouldn't be available on the client side (.js, .html, and so on).

    Abonnementen en sleutels in Video Indexer ontwikkelaars Portal

Tip

Een gebruiker van Video Indexer kan met één abonnementssleutel verbinding maken met meerdere Video Indexer-accounts.Video Indexer user can use a single subscription key to connect to multiple Video Indexer accounts. U kunt deze Video Indexer-accounts vervolgens koppelen aan verschillende Media Services-accounts.You can then link these Video Indexer accounts to different Media Services accounts.

Tokens verkrijgen met de Authorization-APIObtain access token using the Authorization API

Zodra u zich hebt geabonneerd op de autorisatie-API, kunt u toegangs tokens verkrijgen.Once you subscribe to the Authorization API, you can obtain access tokens. Deze toegangstokens worden gebruikt voor verificatie op basis van de Operations-API.These access tokens are used to authenticate against the Operations API.

Elke aanroep naar de Operations-API moet worden gekoppeld aan een toegangstoken dat overeenkomt met het autorisatiebereik van de aanroep.Each call to the Operations API should be associated with an access token, matching the authorization scope of the call.

  • Gebruikers niveau: toegangs tokens op gebruikers niveau bieden u de mogelijkheid om bewerkingen op het gebruikers niveau uit te voeren.User level: User level access tokens let you perform operations on the user level. Hiermee kunt u bijvoorbeeld gekoppelde accounts ophalen.For example, get associated accounts.
  • Account niveau: toegangs tokens op account niveau bieden u de mogelijkheid om bewerkingen uit te voeren op het niveau van de account of het video niveau.Account level: Account level access tokens let you perform operations on the account level or the video level. Upload bijvoorbeeld video, vermeld alle Video's, haal video inzichten op, enzovoort.For example, upload video, list all videos, get video insights, and so on.
  • Video niveau: toegangs tokens op video niveau bieden u de mogelijkheid om bewerkingen uit te voeren op een specifieke video.Video level: Video level access tokens let you perform operations on a specific video. U kunt bijvoorbeeld video inzichten verkrijgen, bijschriften downloaden, widgets ophalen, enzovoort.For example, get video insights, download captions, get widgets, and so on.

U kunt bepalen of deze tokens alleen-lezen zijn of dat ze het bewerken toestaan door allowEdit = True/Falseop te geven.You can control whether these tokens are read-only or if they allow editing by specifying allowEdit=true/false.

Voor de meeste server-naar-server-scenario's gebruikt u waarschijnlijk hetzelfde account token, omdat de account bewerkingen en video bewerkingen worden behandeld.For most server-to-server scenarios, you'll probably use the same account token since it covers both account operations and video operations. Als u echter van plan bent om aan client zijde aanroepen naar Video Indexer te maken (bijvoorbeeld van Java script), zou u een video toegangs token willen gebruiken om te voor komen dat clients toegang krijgen tot het hele account.However, if you're planning to make client side calls to Video Indexer (for example, from JavaScript), you would want to use a video access token to prevent clients from getting access to the entire account. Dit is ook de reden dat bij het insluiten van Video Indexer client code in uw client (bijvoorbeeld met behulp van de widget Get Insights of het ophalen van een speler), een token voor video toegang moet worden verstrekt.That's also the reason that when embedding Video Indexer client code in your client (for example, using Get Insights Widget or Get Player Widget), you must provide a video access token.

Om het eenvoudiger te maken, kunt u Authorization-API > GetAccounts gebruiken om uw accounts op te halen zonder eerst een gebruikerstoken te verkrijgen.To make things easier, you can use the Authorization API > GetAccounts to get your accounts without obtaining a user token first. 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.You can also ask to get the accounts with valid tokens, enabling you to skip an additional call to get an account token.

Toegangstokens verlopen na één uur.Access tokens expire after 1 hour. Zorg ervoor dat uw token geldig is voordat u de Operations-API gebruikt.Make sure your access token is valid before using the Operations API. Als deze is verlopen, roept u de verificatie-API opnieuw op om een nieuw toegangs token op te halen.If it expires, call the Authorization API again to get a new access token.

U bent klaar om te beginnen met de integratie met de API.You're ready to start integrating with the API. Zoek de gedetailleerde beschrijving van elke Video Indexer-REST API.Find the detailed description of each Video Indexer REST API.

Account-idAccount ID

De parameter Account-id is vereist in alle operationele API-aanroepen.The Account ID parameter is required in all operational API calls. Account-id is een GUID die kan worden verkregen op een van de volgende manieren:Account ID is a GUID that can be obtained in one of the following ways:

  • Gebruik de Video Indexer-website om de account-id op te halen:Use the Video Indexer website to get the Account ID:

    1. Ga naar de Video Indexer-website en meld u aan.Browse to the Video Indexer website and sign in.

    2. Ga naar de pagina Instellingen.Browse to the Settings page.

    3. Kopieer de account-id.Copy the account ID.

      Video Indexer instellingen en account-ID

  • Gebruik de Video Indexer-ontwikkelaarsportal om de account-id programmatisch op te halen.Use Video Indexer Developer Portal to programmatically get the Account ID.

    Gebruik de API Accounts ophalen.Use the Get accounts API.

    Tip

    U kunt de toegangstokens voor de accounts genereren door generateAccessTokens=true te definiëren.You can generate access tokens for the accounts by defining generateAccessTokens=true.

  • Haal de account-id op uit de URL van een pagina van de speler in uw account.Get the account ID from the URL of a player page in your account.

    Wanneer u een video bekijkt, wordt de id weergegeven na de sectie accounts en voor de sectie videos.When you watch a video, the ID appears after the accounts section and before the videos section.

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

AanbevelingenRecommendations

In deze sectie vindt u enkele aanbevelingen bij het gebruik van de Video Indexer-API.This section lists some recommendations when using Video Indexer API.

  • Als u van plan bent om een video te uploaden, is het raadzaam om het bestand in een open bare netwerk locatie (bijvoorbeeld OneDrive) te plaatsen.If you're planning to upload a video, it's recommended to place the file in some public network location (for example, OneDrive). Haal de link naar de video op en geef de URL op als de parameter van het uploadbestand.Get the link to the video and provide the URL as the upload file param.

    De URL die is opgegeven met Video Indexer moet verwijzen naar een mediabestand (audio of video).The URL provided to Video Indexer must point to a media (audio or video) file. Sommige links die worden gegenereerd door OneDrive zijn voor een HTML-pagina die het bestand bevat.Some of the links generated by OneDrive are for an HTML page that contains the file. Een eenvoudige verificatie voor de URL is om deze in een browser te plakken: als het downloaden van het bestand wordt gestart, is het waarschijnlijk een goede URL.An easy verification for the URL is to paste it into a browser—if the file starts downloading, it's likely a good URL. Als de browser een bepaalde visualisatie weergeeft, is het waarschijnlijk geen koppeling naar een bestand maar naar een HTML-pagina.If the browser is rendering some visualization, it's likely not a link to a file but to an HTML page.

  • Als u de API die video-inzichten ophaalt voor de opgegeven video aanroept, krijgt u gedetailleerde JSON-uitvoer als resultaat.When you call the API that gets video insights for the specified video, you get a detailed JSON output as the response content. Informatie over de geretourneerde JSON in dit onderwerp.See details about the returned JSON in this topic.

CodevoorbeeldCode sample

Het volgende C#-codefragment toont het gebruik van alle Video Indexer-API's samen.The following C# code snippet demonstrates the usage of all the Video Indexer APIs together.

var apiUrl = "https://api.videoindexer.ai";
var accountId = "..."; 
var location = "westus2";
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 =newbyte[video.Length];
  //video.Read(buffer, 0, buffer.Length);
  //content.Add(newByteArrayContent(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);

Zie ookSee also

Volgende stappenNext steps

Details van de JSON-uitvoer bekijkenExamine details of the output JSON.