首页 > 解决方案 > Azure 媒体服务 - 下载暂时性错误

问题描述

我的数据库中有很多音频,其 URL 如下:

https://mystorage.blob.core.windows.net/mycontainer/uploaded%2F735fe9dc-e568-4920-a3ed-67230ce01991%2F5998d1f8-1795-4776-a19c-f1bc4a0d4786%2F2020-08-13T13%3A09%3A13.0996703Z?sv=2020-02-10&se=2022-01-05T16%3A58%3A50Z&sr=b&sp=r&sig=hQBPyOE92%2F67MqU%2Fe5V2NsqGzgPxogVeXQT%2BOlvbayw%3D

我使用这些 URL 作为我的 JobInput,并提交了一个编码作业,因为我想将音频分发迁移到流媒体方法。但是,每次我使用这种 URL 时,它都会因 DownloadTransientError 而失败,并且会出现类似while trying to download the input files, the files were not acessible.

如果我使用更简单的 URL ( https://mystorage.blob.core.windows.net/mycontainer/my-audio.wav )手动将文件上传到 blob 存储,并将其用作 JobInput,它可以无缝工作。我怀疑这与较大 URL 上的特殊字符有关,但我不确定。可能是什么问题呢?

以下是提交作业的代码部分:

            var jobInput = new JobInputHttp(new[]
            {
                audio.AudioUrl.ToString()
            });
            JobOutput[] jobOutput =
            {
                new JobOutputAsset(outputAssetName),
            };


            var job = await client.Jobs.CreateAsync(
                    resourceGroupName: _azureMediaServicesSettings.ResourceGroup,
                    accountName: _azureMediaServicesSettings.AccountName,
                    transformName: TransformName,
                    jobName: jobName,
                    new Job
                    {
                        Input = jobInput,
                        Outputs = jobOutput
                    });

标签: azure-media-services

解决方案


您需要在提供的 URL 中包含文件名。我将以您的 URL 为例,但也不要转义它,以便更清楚。URL 应该类似于https://mystorage.blob.core.windows.net/mycontainer/uploaded/735fe9dc-e568-4920-a3ed-67230ce01991/5998d1f8-1795-4776-a19c-f1bc4a0d4786/2020-08-13T13: 09:13.0996703Z/my-audio.wav?sv=2020-02-10&se=2022-01-05T16:58:50Z&sr=b&sp=r&sig=hQBPyOE92/67MqU/e5V2NsqGzgPxogVeXQT+Olvbayw= 只需包含输入的实际 blob 名称具有相关文件扩展名的视频或音频文件。


推荐阅读