Azure视频上传任务失败@“我的PlayReady任务”错误:MediaProcessor:执行任务期间发生异常

时间:2013-07-18 05:34:53

标签: azure azure-media-services

我使用以下代码将DRM应用于我的视频文件。但是任务正在失败,我该怎么办才能让它发挥作用?

我可以看到“我的PlayReady任务”达到100%并突然抛出错误。

错误细节: 我的PlayReady任务 MediaProcessor:执行任务期间发生异常

几天前,它正在发挥作用。不确定现在发生了什么?

********************Code sample *************************************************
private static IJob EncodeToAdaptiveBitrateAndConvertToSmoothAndProtect(string inputMediaFilePath, string configFilePath)
        {
            // Create asset and upload file
            IAsset asset = CreateAssestAndUploadSingleFile(AssetCreationOptions.None, inputMediaFilePath);

            // Create a new Job
            IJob job = mediaContext.Jobs.Create("Encode to multi-bitrate and convert to smooth job");


            // Create a new task to encode to Adaptive Bitrate 

            // Get a reference to the Windows Azure Media Encoder
            IMediaProcessor encoder = GetLatestMediaProcessorByName("Windows Azure Media Encoder");

            ITask adpativeBitrateTask = job.Tasks.AddNew("MP4 to Adaptive Bitrate Task",
               encoder,
               "H264 Adaptive Bitrate MP4 Set 720p",
               TaskOptions.None);

            // Specify the input Asset
            adpativeBitrateTask.InputAssets.Add(asset);

            // Add a new output Asset
            IAsset abrAsset = adpativeBitrateTask.OutputAssets.AddNew("Adaptive Bitrate Asset", AssetCreationOptions.None);


            // Create a new task to convert the Adaptive Bitrate Asset to a Smooth Streaming Asset

            // Get a reference to the Windows Azure Media Packager
            IMediaProcessor packager = GetLatestMediaProcessorByName("Windows Azure Media Packager");

            // Windows Azure Media Packager does not accept string presets, so load xml configuration
            string smoothConfig = File.ReadAllText(configFilePath);

            // Create a new Task to convert adaptive bitrate to Smooth Streaming
            ITask smoothStreamingTask = job.Tasks.AddNew("Adaptive Bitrate to Smooth Task",
               packager,
               smoothConfig,
               TaskOptions.None);

            // Specify the input Asset, which is the output Asset from the first task
            smoothStreamingTask.InputAssets.Add(abrAsset);

            // Add a new output Asset
            IAsset smoothOutputAsset = smoothStreamingTask.OutputAssets.AddNew("Smooth Asset", AssetCreationOptions.None);

            // Set up the third task to protect the Adaptive Bitrate Smooth Streaming Asset with PlayReady. 

            // Get a media encryptor reference
            IMediaProcessor playreadyProcessor = GetLatestMediaProcessorByName("Windows Azure Media Encryptor");

            // Read the configuration XML
            string configPlayReady = File.ReadAllText(configFilePathPlayReady);

            // Create a third task. 
            ITask playreadyTask = job.Tasks.AddNew("My PlayReady Task",
               playreadyProcessor,
               configPlayReady,
               TaskOptions.ProtectedConfiguration);

            // Add the input asset, which is the smooth streaming output asset from the second task. 
            playreadyTask.InputAssets.Add(smoothOutputAsset);

            // Add an output asset to contain the results of the job.
            playreadyTask.OutputAssets.AddNew("PlayReady protected output asset", AssetCreationOptions.None);

            // Use the following event handler to check job progress.  
            job.StateChanged += new EventHandler<JobStateChangedEventArgs>(StateChanged);

            // Launch the job.
            job.Submit();

            // Optionally log job details. 
            LogJobDetails(job.Id);

            // Check job execution and wait for job to finish. 
            Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None);
            progressJobTask.Wait();

            // Get a refreshed job reference after waiting on a thread.
            job = GetJob(job.Id);

            // Check for error
            if (job.State == JobState.Error)
            {
                 Console.WriteLine("\nExiting method due to job error.");
            }
            return job;

        }

2 个答案:

答案 0 :(得分:0)

您使用的是什么播放许可服务器? 从代码的角度来看,一切看起来都很好。由于播放器保护预设未包含在样本中,我假设它看起来类似于以下文章中的示例:http://msdn.microsoft.com/en-us/library/windowsazure/dn189154.aspx 请确保可以从公共网络访问licenseAquisitionURL中的值,并且您的keySeedValue或keyID和contentKey仍然有效。

答案 1 :(得分:0)

是否存在可以从失败的实例共享的jobID?