Question

J'essaie de créer un service WCF qui exploite WPF MediaPlayer sur le serveur pour générer des vignettes pour une vidéo téléchargée par un utilisateur. J'ai trouvé beaucoup d'informations sur la manière de rendre un cadre et de l'enregistrer dans un fichier. Mais le problème réside dans l'événement clé MediaOpened (en fait, aucun des événements) que je dois relier à ne le fait pas - ÉDITER le feu.

Quelqu'un sait-il si les événements WPF MediaPlayer ne se déclenchent pas s'ils sont utilisés dans le contexte d'un service WCF?

merci Michael

Était-ce utile?

La solution

J'ai décidé d'essayer d'utiliser le SDK Expression Media Encoder 2 et cela a très bien fonctionné.

Très peu de code pour générer des vignettes à partir d'une vidéo - voici un extrait

public void GenerateThumbnails(string fileName, int numberOfThumbnails)

{     Queue _positionsToThumbnail = new Queue ();     Microsoft.Expression.Encoder.MediaItem video = new Microsoft.Expression.Encoder.MediaItem (nom_fichier);

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);
}

}

Autres conseils

Vous devrez probablement restituer les données à l'écran pour que ces événements soient déclenchés - tout est lié au fait de faire partie de l'arborescence visuelle WPF; qui en tant que service ne l’est pas.

Il existe de nombreuses façons d’essayer de résoudre ce problème, qui sont toutes compliquées et qui ne vont probablement pas à l’échelle. Je suggère d'utiliser les API Windows Media normales (du Kit de développement logiciel (SDK) Windows) pour aller au fond des choses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top