Ошибка служб мультимедиа Azure 400

В настоящее время я создаю приложение и пытаюсь написать веб-задание, чтобы взять файл mp4, который я загрузил в хранилище BLOB-объектов, и создать ресурс, который затем я могу закодировать и подготовить к потоковой передаче с использованием мультимедийных служб 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();
        }
I am using a single storage account that i upload to. i keep getting this error 400 no matter what i try caused by this line

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

что вызывает эту ошибку журнала

context = new CloudMediaContext (новые MediaServicesCredentials (accName, accKey)); должен быть установлен в методе ConvertAndPrepareVideo, а не за его пределами


person TomMurphyDev    schedule 30.04.2017    source источник
comment
Нет, файлы больших двоичных объектов - это 8486c644-7ed7-4f63-bba2-a8dd60c10bb1.mp4, а имена контейнеров - это поля id этой длины f24d8371ef41e0b32ddc4da6f5aa84ef   -  person Mardoxx    schedule 30.04.2017
comment
Вы решили эту проблему?   -  person TomMurphyDev    schedule 30.04.2017
comment
Microsoft.Azure.WebJobs.Host.FunctionInvocationException: исключение при выполнении функции: Functions.ProcessVideo ---> System.Net.WebException: удаленный сервер возвратил ошибку: (400) неверный запрос. в System.Net.WebClient.UploadValues ​​(адрес Uri, метод String, данные NameValueCollection) в System.Net.WebClient.UploadValues ​​(адрес строки, метод String, данные NameValueCollection) в Microsoft.WindowsAzure.MediaServices.Client.AcsTokassenProvider47. ‹> c .b__0 () в Microsoft.Practices.TransientFaultHandling.RetryPolicy. ‹> c__DisplayClass1.b__0 () в Microsoft.Practices.TransientFaultHandling.RetryPolicy.ExecuteAction [TResult] (Func_3_1 func) в Microsoft.PracticesHandling. ) в Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory.GetAccountApiEndpoint (OAuthDataServiceAdapter DataServiceAdapter, ServiceVersionAdapter versionAdapter Ури apiServer, userAgentAdapter userAgentAdapter, IWebRequestAdapter clientRequestIdAdapter) в Microsoft.WindowsAzure.MediaServices.Client.AzureMediaServicesClassFactory. <> c__DisplayClass24_0.b__0 () в Microsoft. WindowsAzure.MediaServices.Client.Ca che_4_1 valueFactory, Func_5_1.CreateValue () в System.Lazy_6_1.get_Value () в Microsoft.WindowsAzure.MediaServices.Client.AssetCollection.get_Queryable () в Microsoft.WindowsAzure.MediaServices1.Client8_aseCollection исходный код (исходный объект Express_keys_Invox.Collection) [] arguments) в 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.ThrowForNonSuccess (задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в System.R untime.CompilerServices.TaskAwaiter.ValidateEnd (задача задачи) в Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__21.MoveNext () --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- в System.Runtime .CompilerServices.TaskAwaiter. ThrowForNonSuccess (задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__19.MoveNext из предыдущего местоположения исключения (из предыдущего местоположения исключения в стеке) брошено --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в System.Runtime.CompilerServices.TaskureEwaiter.V .WebJobs.Host.Executors.FunctionExecutor.d__13.MoveNext () --- Конец трассировки стека внутреннего исключения --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor .d__13.MoveNext () --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) в System.Runtime.Co mpilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.d__10.MoveNext ()   -  person sabbour    schedule 04.06.2017


Ответы (1)


Ваши имена файлов / контейнеров слишком длинные?

person TomMurphyDev    schedule 30.04.2017