簡體   English   中英

Azure媒體服務錯誤400

[英]Azure Media Services Error 400

我目前正在構建一個應用程序,並試圖編寫一個webjob來獲取上傳到blob存儲中的mp4文件並創建資產,然后我可以使用Azure媒體服務對其進行編碼和流式傳輸。

 public class Functions { // This function will get triggered/executed when a new message is written // on an Azure Queue called queue. static string accName = "copied from portal "; static string accKey = "as above"; static CloudMediaContext context = new CloudMediaContext(accName,accName); // Use the cached credentials to create CloudMediaContext. //static CloudMediaContext context = new CloudMediaContext(accName,accKey); public static void ProcessVideo( [QueueTrigger("videorequest")] VideoBlobInformation blobInfo, [Blob("{ProfileId}/{BlobName}", FileAccess.Read)] Stream input, [Blob("{ProfileId}/{BlobNameWithoutExtension}_stream.mp4")] CloudBlockBlob outputBlob) { VideoBlobInformation b = blobInfo; using (Stream output = outputBlob.OpenWrite()) { ConvertAndPrepareVideo(b,input, output); } // Entity Framework context class is not thread-safe, so it must // be instantiated and disposed within the function. using (impulsevidContext db = new impulsevidContext()) { //var id = blobInfo.ProfileId; //Video ad = db.Videos.Find(id); //if (ad == null) //{ // throw new Exception(String.Format("AdId {0} not found, can't create thumbnail", id.ToString())); //} //ad.StreamUrl = outputBlob.Uri.ToString(); //db.SaveChanges(); } } public static void ConvertAndPrepareVideo(VideoBlobInformation info,Stream input, Stream output) { var storageAccount = new CloudStorageAccount(new StorageCredentials("accnameofstorage", "storage account associated with azure media services"), true); //output all webjob input blobs into a container -mediacontroller- var cloudBlobClient = storageAccount.CreateCloudBlobClient(); var mediaBlobContainer = cloudBlobClient.GetContainerReference("impfile"); mediaBlobContainer.CreateIfNotExists(); IAsset sourceAsset = context.Assets.Where(a => a.Id == info.VideoId).First(); } 
我正在使用上傳到的單個存儲帳戶。 無論我對此行造成什么嘗試,我都不斷收到此錯誤400

 IAsset sourceAsset = context.Assets.Where(a => a.Id == info.VideoId).First(); 

導致此日志錯誤

Microsoft.Azure.WebJobs.Host.FunctionInvocationException:執行功能時發生異常:Functions.ProcessVideo ---> System.Net.WebException:遠程服務器返回錯誤:(400)錯誤的請求。 在System.Net.WebClient.UploadValues(URI地址,字符串方法,NameValueCollection數據)在System.Net.WebClient.UploadValues(字符串地址,字符串方法,NameValueCollection數據)在Microsoft.WindowsAzure.MediaServices.Client.AcsTokenProvider。<> c__DisplayClass47_2 Microsoft.Practices.TransientFaultHandling.RetryPolicy的.b__0()。Microsoft.Practices.TransientFaultHandling.RetryPolicy.ExecuteAction [TResult](Func 1 func) at Microsoft.Practices.TransientFaultHandling.RetryPolicy.ExecuteAction(Action action) at Microsoft.WindowsAzure.MediaServices.Client.AcsTokenProvider.RefreshToken() at Microsoft.WindowsAzure.MediaServices.Client.AcsTokenProvider.GetAccessToken() at Microsoft.WindowsAzure.MediaServices.Client.AcsTokenProvider.GetAuthorizationHeader() at Microsoft.WindowsAzure.MediaServices.Client.OAuth.OAuthDataServiceAdapter.AddAccessTokenToRequest(WebRequest request) at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.<>c__DisplayClass21_0.<GetAccountApiEndpoint>b__0() at Microsoft.Practices.TransientFaultHandling.RetryPolicy.<>c__DisplayClass1.<ExecuteAction>b__0() at Microsoft.WindowsAzure.MediaServices.Client.TransientFaultHandling.MediaRetryPolicy.ExecuteAction[TResult](Func 1 func) at Microsoft.Practices.TransientFaultHandling.RetryPolicy.ExecuteAction(Action action) at Microsoft.WindowsAzure.MediaServices.Client.AcsTokenProvider.RefreshToken() at Microsoft.WindowsAzure.MediaServices.Client.AcsTokenProvider.GetAccessToken() at Microsoft.WindowsAzure.MediaServices.Client.AcsTokenProvider.GetAuthorizationHeader() at Microsoft.WindowsAzure.MediaServices.Client.OAuth.OAuthDataServiceAdapter.AddAccessTokenToRequest(WebRequest request) at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.<>c__DisplayClass21_0.<GetAccountApiEndpoint>b__0() at Microsoft.Practices.TransientFaultHandling.RetryPolicy.<>c__DisplayClass1.<ExecuteAction>b__0() at Microsoft.WindowsAzure.MediaServices.Client.TransientFaultHandling.MediaRetryPolicy.ExecuteAction[TResult](Func Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.GetAccountApiEndpoint(OAuthDataServiceAdapter dataServiceAdapter,ServiceVersionAdapter versionAdapter,Uri apiServer,UserAgentAdapter userAgentAdapter,IWebRequestAdapter.ClientWindows.zure.Service.Microsoft.Practices.TransientFaultHandling.RetryPolicy.ExecuteAction(Action action) Microsoft.WindowsAzure.MediaServices.Client.Cache 1.GetOrAdd(String key, Func AzureMediaServicesClassFactory。<> c__DisplayClass24_0.b__0() 1 expirationFactory) at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.CreateAzureMediaServicesEndPoint(Uri azureMediaServicesEndpoint, MediaContextBase mediaContext) at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory..ctor(Uri azureMediaServicesEndpoint, CloudMediaContext mediaContext) at Microsoft.WindowsAzure.MediaServices.Client.CloudMediaContext.get_MediaServicesClassFactory() at Microsoft.WindowsAzure.MediaServices.Client.AssetCollection.<.ctor>b__2_0() at System.Lazy 1 expirationFactory) at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.CreateAzureMediaServicesEndPoint(Uri azureMediaServicesEndpoint, MediaContextBase mediaContext) at Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory..ctor(Uri azureMediaServicesEndpoint, CloudMediaContext mediaContext) at Microsoft.WindowsAzure.MediaServices.Client.CloudMediaContext.get_MediaServicesClassFactory() at Microsoft.WindowsAzure.MediaServices.Client.AssetCollection.<.ctor>b__2_0() at System.Lazy 1.LazyInitValue() at System.Lazy 1.get_Value()在Microsoft.WindowsAzure.MediaServices.Client.AssetCollection.get_Queryable()在Microsoft.WindowsAzure .MediaServices.Client.BaseCollection 1.get_Provider() at System.Linq.Queryable.Where[TSource](IQueryable 1源,表達式1 predicate) at VideoProcess.Functions.ConvertAndPrepareVideo(VideoBlobInformation info, Stream input, Stream output) at VideoProcess.Functions.ProcessVideo(VideoBlobInformation blobInfo, Stream input, CloudBlockBlob outputBlob) at lambda_method(Closure , Functions , Object[] ) at Microsoft.Azure.WebJobs.Host.Executors.VoidMethodInvoker 1 predicate) at VideoProcess.Functions.ConvertAndPrepareVideo(VideoBlobInformation info, Stream input, Stream output) at VideoProcess.Functions.ProcessVideo(VideoBlobInformation blobInfo, Stream input, CloudBlockBlob outputBlob) at lambda_method(Closure , Functions , Object[] ) at Microsoft.Azure.WebJobs.Host.Executors.VoidMethodInvoker 1.InvokeAsync(TReflected實例,Object []參數)在Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`1.d__8.MoveNext()---從上次引發異常的位置開始的堆棧跟蹤---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)在Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__22.MoveNext()從上一個引發異常的位置開始的堆棧跟蹤--System.Runtime.CompilerServices.TaskAwaiter的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任務)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務) Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__21.MoveNext()處的ValidateEnd(任務任務)---從上一個引發異常的位置開始的堆棧跟蹤---在System.Runtime.CompilerServices.TaskAwaiter.Th Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__19.MoveNext()上的rowForNonSuccess(任務任務)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)-從上次發生異常的位置開始的堆棧跟蹤拋出---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)在System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任務任務)在Microsoft.Azure .WebJobs.Host.Executors.FunctionExecutor.d__13.MoveNext()-內部異常堆棧跟蹤的結尾-在Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() .d__13.MoveNext()---從上一個引發異常的位置開始的堆棧跟蹤---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSucce Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__10.MoveNext()上的ssAndDebuggerNotification(任務任務)

context = new CloudMediaContext(new MediaServicesCredentials(accName,accKey)); 應該在ConvertAndPrepareVideo方法中設置,而不是在外部

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM