Azure编码作业失败

时间:2015-02-12 14:11:13

标签: azure azure-media-services

我正在通过休息将视频上传到我们的azure媒体服务器,但编码作业失败,但出现以下异常:

    null
ErrorProcessingTask : Azure Media Encoder could not load the preset Preset.xml on source tom2.mp4:File type isn't supported.

我可以看到它声明文件类型不受支持,但如果我手动上传它没有问题。

这就是我发布视频的方式

     var uploadLocatorId = asset["Id"];

            var uploadurl = asset["BaseUri"].ToString() + "/tom2.mp4" + asset["ContentAccessComponent"].ToString();

            var formcontent = new MultipartFormDataContent();

            FileStream stream = File.OpenRead(@"C:\VideoFiles\tom2.mp4");
            byte[] fileBytes = new byte[stream.Length];
            Int32 blobLength = fileBytes.Length;
            stream.Read(fileBytes, 0, fileBytes.Length);
        //    stream.Close();

            var requestContent = new MultipartFormDataContent();
            //    here you can specify boundary if you need---^
            var mp4ieContent = new ByteArrayContent(fileBytes);
            mp4ieContent.Headers.ContentType =
                MediaTypeHeaderValue.Parse("application/octet-stream");
            mp4ieContent.Headers.ContentLength = blobLength;

            var memory = new MemoryStream(fileBytes);
            var streamcontent = new StreamContent(memory);
            formcontent.Add(streamcontent, "tom2", "tom2.mp4");
           // formcontent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

            var date = DateTime.UtcNow.ToString("R", System.Globalization.CultureInfo.InvariantCulture);
            var container = AssetID.ToString();
            container = container.Replace("nb:cid:UUID:", "asset-");


            client = new HttpClient();
            client.DefaultRequestHeaders.Add("x-ms-version", "2014-02-14");
            client.DefaultRequestHeaders.Add("x-ms-date", date);
            client.DefaultRequestHeaders.Add("x-ms-blob-type", "BlockBlob");
            client.DefaultRequestHeaders.Accept.Add(type);

            result = await client.PutAsync(uploadurl, formcontent);

该文件存在于azure服务器上,但无法播放。

任何人都可以向我指出任何方向,

2 个答案:

答案 0 :(得分:1)

following topic描述了在使用REST创建资产并将文件上传到blob时需要采取的步骤(您可以使用任何方法上传文件)。

一般步骤如下:

  • 创建资产(生成blob容器)。
  • 获取SAS网址。
  • 创建资产文件(与您的物理文件同名,例如Video.mp4)。
  • 将您的物理文件(Video.mp4)上传到SAS网址。有关上载文件的详细信息,请参阅 Upload file to Azure Blob Storage directly from browser

  • 根据需要使用大小和其他信息更新资产文件。

  • 安排编码工作。
  • 通过创建按需定位器发布资产。

或者,您可以在上载blob后创建资产文件。然后,您将枚举容器并创建相应的AssetFiles。

答案 1 :(得分:0)

您的视频资产似乎缺少一些元数据。以下是您可以用来创建资产的代码,并将文件作为AssetFiles上传到该特定资产。然后在视频资源上运行编码预设。

https://msdn.microsoft.com/en-us/library/azure/jj129584.aspx

干杯, 严明飞