Невозможно создать водяной знак для нескольких видео за один раз с помощью службы мультимедиа Azure
Когда я вызываю один запрос водяного знака (закодировать на изображение на видео для одного видео), он работает нормально. Но когда я вызываю многократный запрос водяного знака (более 5 или 6 запросов), он выполняется нормально для всех видео, но не генерирует текст водяного знака на некоторых видео. Когда мы запускаем отображение водяного знака с одним запросом на видео, но когда мы запускаем несколько запросов, например, более 5 или 6 запросов с различным изображением водяного знака, все они выполняются параллельно, что в случайном порядке 2 видео не показывает водяной знак на видео., Хотя водяной знак успешно обрабатывается без какого-либо ошибка.
Мы использовали следующий код для создания оверлейного изображения на видео с помощью службы Azure Media.
Ссылочный URL: https://docs.microsoft.com/en-us/azure/media-services/media-services-advanced-encoding-with-mes
[ENCODING] ТИП БЛОКА РЕЗЕРВИРОВАНИЯ: Стандартный
КОДИРОВАНИЕ ЗАБРОНИРОВАННЫХ ЕДИНИЦ: {5}
[MEDIA PROCESSOR] ИМЯ МЕДИАПРОЦЕССОРА: Media Encoder Standard
ниже код:
статический public IAsset EncodeWithOverlay(IAsset assetSource, строка customPresetFileName) {
// Declare a new job.
IJob job = _context.Jobs.Create("Job "+OutputVideoPath);
// Get a media processor reference, and pass to it the name of the
// processor to use for the specific task.
IMediaProcessor processor = GetLatestMediaProcessorByName("Media Encoder Standard");
// Load the XML (or JSON) from the local file.
string configuration = customPresetFileName;
// Create a task
ITask task = job.Tasks.AddNew("Media Encoder Standard encoding task",
processor,
configuration,
TaskOptions.None);
// Specify the input assets to be encoded.
// This asset contains a source file and an overlay file.
task.InputAssets.Add(assetSource);
// Add an output asset to contain the results of the job.
task.OutputAssets.AddNew("Output " + OutputVideoPath,
AssetCreationOptions.None);
job.StateChanged += new EventHandler<JobStateChangedEventArgs>(JobStateChanged);
job.Submit();
job.GetExecutionProgressTask(CancellationToken.None).Wait();
return job.OutputMediaAssets[0];
}
Предустановленные:
{
"Version": 1.0,
"Sources": [
{
"Streams": [],
"Filters": {
"VideoOverlay": {
"Position": {
"X": 641,
"Y": 15,
"Width": 181,
"Height": 29
},
"AudioGainLevel": 0.0,
"MediaParams": [
{
"OverlayLoopCount": 1
},
{
"IsOverlay": true,
"OverlayLoopCount": 1,
"InputLoop": true
}
],
"Source": "Sample Test.png",
"FadeInDuration": {
"Duration": "00:00:01"
}
}
},
"Pad": true
}
],
"Codecs": [
{
"KeyFrameInterval": "00:00:02",
"H264Layers": [
{
"Profile": "Auto",
"Level": "auto",
"Bitrate": 460,
"MaxBitrate": 460,
"BufferWindow": "00:00:05",
"Width": 960,
"Height": 540,
"BFrames": 3,
"ReferenceFrames": 3,
"AdaptiveBFrame": true,
"Type": "H264Layer",
"FrameRate": "0/1"
},
{
"Profile": "Auto",
"Level": "auto",
"Bitrate": 240,
"MaxBitrate": 240,
"BufferWindow": "00:00:05",
"Width": 640,
"Height": 360,
"BFrames": 3,
"ReferenceFrames": 3,
"AdaptiveBFrame": true,
"Type": "H264Layer",
"FrameRate": "0/1"
}
],
"Type": "H264Video"
},
{
"Profile": "AACLC",
"Channels": 2,
"SamplingRate": 48000,
"Bitrate": 128,
"Type": "AACAudio"
}
],
"Outputs": [
{
"FileName": "{Basename}_{Width}x{Height}_{VideoBitrate}.mp4",
"Format": {
"Type": "MP4Format"
}
}
]
}
Нужна ваша помощь, чтобы решить эту проблему.