WCF Serviço de criar videos Miniaturas
-
22-07-2019 - |
Pergunta
Eu estou tentando criar um serviço WCF que aproveita a WPF MediaPlayer no servidor para gerar miniaturas de um vídeo que um usuário fizer uploads. Eu encontrei um monte oif informações sobre como tornar um quadro e salve-o em um arquivo. Mas o problema é o evento chave MediaOpened (na verdade nenhum dos eventos) eu preciso amarrar em não -. EDIT fogo
Alguém sabe se os eventos WPF MediaPlayer não incêndios, se ion usada no contexto de um serviço WCF?
graças Michael
Solução
Eu decidi tentar e usar o Expression Media Encoder 2 SDK e funcionou muito bem.
Muito pouco código para gerar miniaturas de um vídeo - aqui é um trecho
public void GenerateThumbnails(string fileName, int numberOfThumbnails)
{ Fila _positionsToThumbnail = nova fila (); Microsoft.Expression.Encoder.MediaItem vídeo = new Microsoft.Expression.Encoder.MediaItem (fileName);
var totalMilliseconds = video.FileDuration.TotalMilliseconds;
//create a queue of timespans for the thumbnails
for (int i = 0; i < numberOfThumbnails; i++)
{
_positionsToThumbnail.Enqueue(TimeSpan.FromMilliseconds((((2 * i) + 1) * totalMilliseconds) / (2 * numberOfThumbnails)));
}
//create the thumbnails and save them to disk
while(_positionsToThumbnail.Count > 0)
{
Bitmap bitMap = video.GetThumbnail(_positionsToThumbnail.Dequeue(), new System.Drawing.Size(100,100));
bitMap.Save(@"F:\thumbs\" + _positionsToThumbnail.Count.ToString() + ".png", ImageFormat.Png);
}
}
Outras dicas
Você provavelmente precisará processar os dados na tela, para esses eventos para ser demitido - é tudo amarrado para fazer parte da árvore visual WPF; que quando executado como um serviço que não é.
Há muitas maneiras que você poderia tentar resolver este, todos os quais são complicadas, e provavelmente não vão escala. Eu sugiro usar o normal, de API windows media (a partir do Windows Media SDK) para chegar ao fundo da questão.