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