0

我正在使用以下代码将 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;

        }
4

2 回答 2

0

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

于 2013-07-21T00:08:10.240 回答
0

是否有可以从失败的实例中共享的 jobID?

于 2013-07-26T17:59:30.510 回答