¿Cómo obtengo una miniatura de video en .Net?

Estoy buscando implementar una función que recupere un solo cuadro de un video de entrada, por lo que puedo usarlo como miniatura.

Algo en este sentido debería funcionar:

// filename examples: "test.avi", "test.dvr-ms" // position is from 0 to 100 percent (0.0 to 1.0) // returns a bitmap byte[] GetVideoThumbnail(string filename, float position) { } 

¿Alguien sabe cómo hacer esto en .Net 3.0?

La solución correcta será la “mejor” implementación de esta función. Puntos de bonificación para evitar la selección de marcos en blanco.

Terminé rodando mi propia clase independiente (con el método único que describí), la fuente se puede ver aquí . El navegador de medios es GPL pero estoy feliz de que el código que escribí para ese archivo sea de dominio público. Tenga en cuenta que utiliza la interoperabilidad del proyecto directshow.net , por lo que tendrá que borrar esa parte del código con ellos.

Esta clase no funcionará para archivos DVR-MS, necesita inyectar un filtro de show directo para ellos.

Este proyecto hará el truco para AVI: http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx

Cualquier otro formato, puede mirar en directo. Hay algunos proyectos que podrían ayudar:
http://sourceforge.net/projects/directshownet/
http://code.google.com/p/slimdx/

1- Obtenga la última versión de ffmpeg.exe desde: http://ffmpeg.arrozcru.org/builds/

2- Extrae el archivo y copia ffmpeg.exe a tu sitio web

3- Usa este Código:

 Process ffmpeg; string video; string thumb; video = Server.MapPath("first.avi"); thumb = Server.MapPath("frame.jpg"); ffmpeg = new Process(); ffmpeg.StartInfo.Arguments = " -i "+video+" -ss 00:00:07 -vframes 1 -f image2 -vcodec mjpeg "+thumb; ffmpeg.StartInfo.FileName = Server.MapPath("ffmpeg.exe"); ffmpeg.Start(); 

Hay algunas bibliotecas en http://www.mitov.com que pueden ayudar. Es un envoltorio genérico para la funcionalidad Directshow, y creo que una de las demostraciones muestra cómo tomar un marco de un archivo de video.