최근에 Media Services가 생성 된 뉴스가있는 몇 가지 지침이 있습니다. 우리는 "Azure Media Encoder"가 가치가 낮아지고 이제는 "Media Encoder Standard"를 사용한다는 것을 보았습니다. 따라서 동영상을 다시 업로드 할 수는 있지만 미리보기 이미지를 만들 수는 없습니다. 우리를 도울 수 있습니까? 애셋에서 미리보기 이미지를 가져 오는 방법은 무엇입니까? 당신은 썸네일에 대한 이전되지 않는 사전 스키마를 사용하는 것처럼자산에서 작은 이미지 만들기 - Azure Media Services
public void CreateThumbnails(string idAssetVideo, int iSegundo, string sPath)
{
if (string.IsNullOrEmpty(idAssetVideo)) throw new Excepcion("El idAssetVideo no puede ser nulo. Póngase en contacto con soporte.");
string sTime = Utilidades.GetDuracionLabelFromSegundos(iSegundo);
IAsset asset = _context.Assets.Where(a => a.Id == idAssetVideo).SingleOrDefault();
if (asset == null) throw new Excepcion("No existe ningún Asset con el Id indicado. Póngase en contacto con soporte.");
// Declare a new job.
IJob job = _context.Jobs.Create("My Thumbnail job");
// Get a media processor reference, and pass to it the name of the
// processor to use for the specific task.
IMediaProcessor processor = UtilsAzure.GetLatestMediaProcessorByName("Media Encoder Standard", _context);
//Configuración para generar el Thumbnail
string configThumbnails = @"<Thumbnail Size='50%,*' Type='Jpeg' Filename='{OriginalFilename}_{Size}_{ThumbnailTime}_{ThumbnailIndex}_{Date}_{Time}.{DefaultExtension}'>
<Time Value='0:0:0' Step='" + sTime + "'/></Thumbnail>";
//string configThumbnails = "<?xml version='1.0' encoding='UTF-8'?><Thumbnail Size='200,*' Type='Jpeg' JpegQuality='90' Filename='" + sTime + ".jpeg'><Time Value='" + sTime + "'/></Thumbnail>";
ITask task = job.Tasks.AddNew("My thumbnail task",
processor,
configThumbnails,
TaskOptions.ProtectedConfiguration);
// Specify the input asset to be encoded.
task.InputAssets.Add(asset);
// Add an output asset to contain the results of the job.
task.OutputAssets.AddNew("Output asset",
AssetCreationOptions.None);
// Use the following event handler to check job progress.
job.StateChanged += new
EventHandler<JobStateChangedEventArgs>(UtilsAzure.StateChanged);
// Launch the job.
job.Submit();
// Check job execution and wait for job to finish.
Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None);
progressJobTask.Wait();
// If job state is Error, the event handling
// method for job progress should log errors. Here we check
// for error state and exit if needed.
if (job.State == JobState.Error)
{
throw new Exception("Exiting method due to job error.");
}
List<IAssetFile> lAF = job.OutputMediaAssets[0].AssetFiles.ToList();
//Valido
if (lAF == null || !lAF.Any()) throw new Excepcion("El trabajo azure no devolvió resultados");
if (lAF.Where(x => x.Name.EndsWith(".jpg")).FirstOrDefault() == null) throw new Excepcion("El trabajo azure no contiene ningún archivo con extensión JPG");
if (!Directory.GetParent(sPath).Exists) throw new Excepcion("No existe la carpeta donde guardar el thumbnail de manera provisional");
lAF.Where(x => x.Name.EndsWith(".jpg")).FirstOrDefault().Download(sPath);
}
감사합니다! 작동합니다! 실제로, 하나의 이미지 만 생성하면됩니다. 따라서 XML을 단순화했습니다. – user3809539