我使用以下代码将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;
}
答案 0 :(得分:0)
您使用的是什么播放许可服务器? 从代码的角度来看,一切看起来都很好。由于播放器保护预设未包含在样本中,我假设它看起来类似于以下文章中的示例:http://msdn.microsoft.com/en-us/library/windowsazure/dn189154.aspx 请确保可以从公共网络访问licenseAquisitionURL中的值,并且您的keySeedValue或keyID和contentKey仍然有效。
答案 1 :(得分:0)
是否存在可以从失败的实例共享的jobID?