Öğretici: Media API için video Çözümleyicisi 'Ni kullanma

Medya için Azure video Çözümleyicisi (eski adıyla Video Indexer), Microsoft tarafından sunulan çeşitli ses ve video yapay zeka (AI) teknolojilerini tek bir tümleşik hizmette birleştirerek geliştirme daha kolay hale getirir. API 'Ler, geliştiricilerin ölçek, küresel erişim, kullanılabilirlik ve bulut platformlarının güvenilirliğini öğrenmek zorunda kalmadan medya AI teknolojilerine odaklanmasını sağlamak üzere tasarlanmıştır. API 'Leri kullanarak dosyalarınızı karşıya yükleyebilir, ayrıntılı video öngörüleri alabilir, eklenebilir Öngörüler ve oynatıcı Pencere öğelerinin URL 'Lerini alabilir ve daha fazlasını yapabilirsiniz.

Medya hesabı için bir video Çözümleyicisi oluştururken, ücretsiz bir deneme hesabı (örneğin, belirli bir sayıda dizin oluşturma dakikası alırsınız) veya ücretli bir seçenek (Kota ile sınırlı olmamak üzere) arasından seçim yapabilirsiniz. Ücretsiz deneme sürümü sayesinde, medya için video Çözümleyicisi, Web sitesi kullanıcılarına en fazla 600 dakikalık ücretsiz dizin ve API kullanıcılarına en fazla 2400 dakikalık ücretsiz dizin sağlar. ücretli bir seçenekle, Azure aboneliğinize ve bir Azure Media Services hesabına bağlımedya hesabı için bir Video çözümleyicisi oluşturursunuz. dizin oluşturma için ödeme yaparsınız. daha fazla bilgi için bkz. Media Services fiyatlandırması.

Bu makalede, geliştiricilerin medya API 'si Için video Çözümleyicisi'nden nasıl yararlanabilgösterdiği gösterilmektedir.

API’ye abone olma

  1. Medya geliştirici portalı Için video Çözümleyicisi'nde oturum açın.

    Oturum açma bilgileriyleilgili bir sürüm notuna bakın.

    Medya geliştirici portalı için video Çözümleyicisi 'nde oturum açın

    Önemli

    • Medya için video Çözümleyicisi 'ne kaydolduğunuzda kullandığınız sağlayıcıyı kullanmanız gerekir.
    • kişisel Google ve Microsoft (Outlook/live) hesapları yalnızca deneme hesapları için kullanılabilir. Azure'a bağlı hesaplar için Azure Active Directory gerekir.
    • Her e-posta için yalnızca bir etkin hesap olabilir. Bir Kullanıcı, Google için ve daha sonraki bir adımda ile oturum açmaya çalışırsa, user@gmail.com user@gmail.com İkincisi bir hata sayfası görüntüleyecektir ve bu, kullanıcının zaten var olduğunu bildiriyor.
  2. Abone olun.

    Ürünler sekmesini seçin. Sonra yetkilendirme ve abone ol ' u seçin.

    Video Indexer geliştirici portalındaki ürünler sekmesi

    Not

    Yeni kullanıcılar otomatik olarak Yetkilendirme’ye abone edilir.

    Abone olduktan sonra, aboneliğinizi ürünlerin -> yetkilendirmesi altında bulabilirsiniz. Abonelik sayfasında, birincil ve ikincil anahtarları bulacaksınız. Anahtarlar korunmalıdır. Anahtarlar yalnızca sunucu kodunuz tarafından kullanılmalıdır. Bunlar istemci tarafında (.js, .html vb.) kullanılamaz.

    Video Indexer geliştirici portalındaki abonelik ve anahtarlar

İpucu

Medya kullanıcıları için video Çözümleyicisi, medya hesapları için birden çok video çözümleyiciye bağlanmak üzere tek bir abonelik anahtarı kullanabilir. daha sonra bu Video çözümleyicisi 'ni, farklı Media Services hesaplara bağlayabilirsiniz.

Yetkilendirme API'sini kullanarak erişim belirtecini alma

Yetkilendirme API 'sine abone olduktan sonra erişim belirteçleri elde edebilirsiniz. Bu erişim belirteçleri, İşlemler API’sinde kimlik doğrulamak için kullanılır.

İşlemler API'sine yapılan her çağrı, çağrının yetkilendirme kapsamına uyan bir erişim belirteci ile ilişkilendirilmelidir.

  • Kullanıcı düzeyi: Kullanıcı düzeyi erişim belirteçleri, Kullanıcı düzeyinde işlem gerçekleştirmenize olanak tanır. Örnek: ilişkili hesaplar alma.
  • Hesap düzeyi: hesap düzeyi erişim belirteçleri, Hesap düzeyinde veya video düzeyinde işlemler gerçekleştirmenize olanak tanır. Örneğin, videoyu karşıya yükleyin, tüm videoları listeleyin, video öngörüleri alın ve bu şekilde devam edin.
  • Video düzeyi: video düzeyi erişim belirteçleri, belirli bir video üzerinde işlemler gerçekleştirmenize olanak tanır. Örneğin, video öngörüleri edinin, resim yazıları indirin, pencere öğelerini alın vb.

Belirteçlerin izin düzeyini iki şekilde kontrol edebilirsiniz:

  • Hesap belirteçleri için, hesap erişim belirtecini izin API 'siyle birlikte kullanabilir ve izin türünü belirtebilirsiniz (okuyucu / katkıda bulunan / myaccessmanager / sahibi).
  • Tüm belirteç türleri ( Hesap belirteçleri dahil) Için, AllowEdit = true/false belirtebilirsiniz. yanlış bir okuyucu izninin (salt okunurdur) eşdeğeri ve doğru bir katkıda bulunan izninin (okuma-yazma) eşdeğeri.

Çoğu sunucu-sunucu senaryosunda, büyük olasılıkla Hesap işlemlerini ve video işlemlerini kapsadığından aynı Hesap belirtecini kullanacaksınız. Bununla birlikte, medya için video Çözümleyicisi 'ne istemci tarafında çağrılar yapmayı planlıyorsanız (örneğin, JavaScript 'ten), istemcilerin tüm hesaba erişimini engellemek için bir video erişim belirteci kullanmak isteyeceksiniz. bu ayrıca, istemcinize medya istemci kodu için Video çözümleyicisi katıştırırken (örneğin, get Analizler pencere öğesi veya oynatıcı al pencere öğesi kullanarak), bir Video erişim belirteci sağlamanız gerekir.

İşleri kolaylaştırmak için Yetkilendirme API’si > GetAccounts’u kullanarak ilk önce bir kullanıcı belirteci almaya gerek kalmadan hesaplarınızı alabilirsiniz. Ayrıca, hesapları geçerli belirteçlerle almayı da isteyebilirsiniz. Böylece hesap belirteci almak için yapılacak ek bir çağrıyı atlayabilirsiniz.

Erişim belirteçlerinin süresi 1 saatte dolar. İşlemler API'sini kullanmadan önce erişim belirtecinizin geçerli olduğundan emin olun. Süresi dolarsa, yeni bir erişim belirteci almak için yetkilendirme API 'sini yeniden çağırın.

API ile tümleştirmeye başlamaya hazırsınız. Her medya REST API için her bir video Çözümleyicisi 'nin ayrıntılı açıklamasınıbulun.

Hesap Kimliği

Hesap Kimliği parametresi, işleme yönelik tüm API çağrıları için gereklidir. Hesap Kimliği, aşağıdaki yollardan biriyle alınabilen bir GUID'dir:

  • Medya Için video Çözümleyicisi Web sitesini kullanarak hesap kimliğini alın:

    1. Medya Için video Çözümleyicisi Web sitesine gidin ve oturum açın.

    2. Ayarlar sayfasına gidin.

    3. Hesap kimliğini kopyalayın.

      Medya ayarları ve hesap KIMLIĞI için video Çözümleyicisi

  • Hesap KIMLIĞINI programlı bir şekilde almak için medya geliştirici portalı Için video Çözümleyicisi 'ni kullanın.

    Hesap al API 'sini kullanın.

    İpucu

    generateAccessTokens=true parametresini tanımlayarak hesaplar için erişim belirteçleri oluşturabilirsiniz.

  • Hesap Kimliğini hesabınızdaki bir yürütücü sayfasının URL'sinden alın.

    Video izlerken kimlik, accounts bölümünden sonra ve videos bölümünden önce görünür.

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

Öneriler

Bu bölümde, Media API için video Çözümleyicisi 'ni kullanırken bazı öneriler listelenir.

  • bir videoyu karşıya yüklemeyi planlıyorsanız, dosyayı bazı genel ağ konumlarına (örneğin, bir Azure Blob Depolama hesabı) yerleştirmeniz önerilir. Videonun bağlantısını alın ve URL'yi karşıya dosya yükleme parametresi olarak kullanın.

    Medya için video Çözümleyicisi için belirtilen URL, bir medya (ses veya video) dosyasına işaret etmelidir. URL (veya SAS URL 'SI) için kolay bir doğrulama bir tarayıcıya yapıştırmaktır; dosya çalmaya/indirmeye başlarsa, büyük olasılıkla iyi bir URL olur. Tarayıcı bazı görselleştirmeleri işliyorsa, büyük olasılıkla bir dosyanın bağlantısı değildir ve bir HTML sayfasına değildir.

  • Belirtilen video için video içgörüleri alan API’yi çağırdığınızda yanıt içeriği olarak ayrıntılı bir JSON çıktısını alırsınız. Döndürülen JSON hakkındaki ayrıntıları bu konuda görebilirsiniz.

Kod örneği

Aşağıdaki C# kod parçacığı, medya API 'Lerinin tüm video Çözümleyicisinin kullanımını birlikte gösterir.

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);

Kaynakları temizleme

Bu Öğreticiyi tamamladıktan sonra, kullanmayı planlamadığını planladığınız kaynakları silin.

Ayrıca bkz.

Sonraki adımlar

  • JSON çıkışının ayrıntılarını inceleyin
  • Videoyu karşıya yükleme ve dizine almanın önemli yönlerini gösteren örnek koda göz atın. Kodu takip etmek, API 'lerimizi temel işlevler için nasıl kullanacağınızı size iyi bir fikir verecektir. Satır içi açıklamaları okuduğunuzdan emin olun ve en iyi yöntemler ilerlerimize dikkat edin.