Öğretici: Medya API'si için Video Analyzer'ı kullanma
Medya için Azure Video Çözümleyicisi (eski Video Indexer), Microsoft tarafından sunulan çeşitli ses ve video yapay zeka (AI) teknolojilerini tek bir tümleşik hizmette birleştirerek geliştirmeyi basitleştirmektedir. API'ler, geliştiricilerin bulut platformlarının ölçeği, küresel erişim, kullanılabilirlik ve güvenilirliği konusunda endişelenmeden Medya AI teknolojilerini tüketmek için odaklanmalarını sağlayacak şekilde tasarlanmıştır. API'yi kullanarak dosyalarınızı karşıya yükleyebilir, ayrıntılı video içgörüleri edinebilir, eklenebilir içgörü ve oynatıcı pencere öğelerinin URL'lerini ve daha fazlasını elde edin.
Medya için Video Çözümleyicisi hesabı oluştururken, ücretsiz bir deneme hesabı (belirli sayıda ücretsiz dizin oluşturma dakikası alırsınız) veya ücretli bir seçenek (kotayla sınırlı olmadığınız) seçebilirsiniz. Ücretsiz deneme sürümüyle, Medya için Video Analyzer web sitesi kullanıcılarına 600 dakikaya kadar, API kullanıcılarına ise 2400 dakikaya kadar ücretsiz dizin oluşturma sağlar. Ücretli bir seçenekle, Azure aboneliğinize bağlı bir Medya için Video Çözümleyicisi hesabı ve bir Azure Media Services oluşturabilirsiniz. Dizine alınan dakikalar için ödeme, daha fazla bilgi için bkz. Media Services fiyatlandırması.
Bu makalede geliştiricilerin Medya için Video Çözümleyicisi API'sini nasıl yararlanaları gösterilir.
API’ye abone olma
Media Geliştirici Portalı için Video Analyzer'da oturum Geliştirici Portalı.
Oturum açma bilgileriyle ilgili bir sürüm notunu gözden geçirme.

Önemli
- Medya için Video Analyzer'a kayıt olurken de aynı sağlayıcıyı kullanmalıdır.
- 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.
- E-posta başına yalnızca bir etkin hesap olabilir. Bir kullanıcı LinkedIn ve daha sonra Google için ile oturum açmayı deniyorsa, ikincisinde kullanıcının zaten var olduğunu user@gmail.com söyleyen bir hata sayfası user@gmail.com görüntülenir.
Abone olun.
Ürünler sekmesini seçin. Ardından Yetkilendirme'yi seçin ve abone olun.

Not
Yeni kullanıcılar otomatik olarak Yetkilendirme’ye abone edilir.
Abone olduktan sonra aboneliğinizi Ürün Yetkilendirmesi altında -> bulabilirsiniz. Abonelik sayfasında birincil ve ikincil anahtarları bulabilirsiniz. Anahtarlar korunmalıdır. Anahtarlar yalnızca sunucu kodunuz tarafından kullanılmalıdır. Bunlar istemci tarafında (.js, .html vb.) kullanılamaz.

İpucu
Medya kullanıcısı için Video Analyzer, medya hesapları için birden çok Video Analyzer'a bağlanmak üzere tek bir abonelik anahtarı kullanabilir. Daha sonra bu Medya için Video Çözümleyicisi hesaplarını farklı hesaplara Media Services yapabilirsiniz.
Yetkilendirme API'sini kullanarak erişim belirtecini alma
Yetkilendirme API'sini abone olduktan sonra erişim belirteçlerini edinebilirsiniz. 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üzeyinde erişim belirteçleri, kullanıcı düzeyinde işlem gerçekleştirmenize izin sağlar. Örnek: ilişkili hesaplar alma.
- Hesap düzeyi: Hesap düzeyi erişim belirteçleri, hesap düzeyinde veya video düzeyinde işlem gerçekleştirmeniz için size izin sağlar. Örneğin karşıya video yükleme, tüm videoları listele, video içgörüleri al gibi.
- Video düzeyi: Video düzeyinde erişim belirteçleri, belirli bir video üzerinde işlem gerçekleştirmenize olanak sağlar. Örneğin, video içgörüleri alın, açıklamalı alt yazıları indirin, pencere öğeleri alın ve bu şekilde devam edin.
Belirteçlerin izin düzeyini iki şekilde kontrolleyebilirsiniz:
- Hesap belirteçleri için, İzin API'si ile Hesap Erişim Belirteci Alma'yı kullanabilir ve izin türünü (Okuyucu Katkıda / / Bulunanı MyAccessManager Sahibi) / belirtebilirsiniz.
- Tüm belirteç türleri (Hesap belirteçleri dahil) için allowEdit=true/false belirtebilirsiniz. false, Okuyucu izninin (salt okunur) eşdeğeri, true ise Katkıda Bulunan izninin (okuma-yazma) eşdeğeridir.
Sunucudan sunucuya senaryoların çoğunda, büyük olasılıkla aynı hesap belirteci hem hesap işlemlerini hem de video işlemlerini kapsar. Ancak Medya için Video Analyzer'a istemci tarafı çağrılar yapmayı planlıyorsanız (örneğin, JavaScript'den), istemcilerin hesabın tamamına erişmesini önlemek için bir video erişim belirteci kullanmak iyi olur. Ayrıca istemcinize Medya için Video Çözümleyicisi istemci kodunu (örneğin, Get Analizler Widget veya Get Player Widget kullanarak) eklemenin nedeni de bir video erişim belirteci sağlamaktır.
İş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 dolsa, yeni bir erişim belirteci almak için Yetkilendirme API'sini yeniden arayın.
API ile tümleştirmeye başlamaya hazırsınız. Media REST API için Video Analyzer'ın 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:
Hesap Kimliğini almak için Medya için Video Analyzer web sitesini kullanın:
Medya için Video Çözümleyicisi web sitesine göz atma ve oturum açma.
Ayarlar sayfasına gidin.
Hesap kimliğini kopyalayın.

Program aracılığıyla Hesap Kimliğini almak Geliştirici Portalı Için Media Geliştirici Portalı Video Analyzer'ı kullanın.
Hesap al API'sini kullanın.
İpucu
generateAccessTokens=trueparametresini 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,
accountsbölümünden sonra vevideosbö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, Medya API'si için Video Analyzer kullanılırken bazı öneriler liste almaktadır.
Bir videoyu karşıya yüklemeyi planlıyorsanız, dosyayı bir genel ağ konuma (örneğin, Azure Blob depolama hesabı) Depolama ö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'ne sağlanan URL bir medya (ses veya video) dosyasına işaret ediyor olmalıdır. URL (veya SAS URL'si) için kolay bir doğrulama, dosyayı bir tarayıcıya yapıştırmaktır; dosyanın çalma/indirmeye başlaması büyük olasılıkla iyi bir URL'dir. Tarayıcı bazı görselleştirmeleri işlese, büyük olasılıkla bir dosyanın değil html sayfasının bağlantısıdır.
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ığı, tüm Medya API'leri için Video Analyzer'ın birlikte kullanımını 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 tamamladikten sonra, kullanmayı planlamadnız kaynakları silin.
Ayrıca bkz.
Sonraki adımlar
- Çıkış JSON'larının ayrıntılarını inceleme
- Bir videoyu karşıya yükleme ve dizinlemenin önemli yönünü gösteren örnek koda göz atabilirsiniz. Kodu takip etmek, temel işlevler için API'mizi nasıl kullanabileceğiniz konusunda size iyi bir fikir vetir. Satır içi yorumları okuduğundan emin olun ve en iyi yöntemlerle ilgili önerilerimize dikkat edin.