2009-11-04 25 views
6

¿Es posible crear una imagen en miniatura de un video en C# (como el primer fotograma)?Vídeo en miniatura C#

Pequeña actualización: Necesitaré una imagen en miniatura de un video FLV en C# ya que estoy usando Flex para mostrar video. Y sí, los enlaces a algunas bibliotecas serían útiles.

+0

Sí sería la respuesta corta a su pregunta – sshow

Respuesta

7

puedo pensar en dos opciones de la parte superior de mi cabeza:

  1. utilizar una herramienta externa, como ffmpeg, para generar imágenes en miniatura. Esta es probablemente la solución más comúnmente implementada para este problema.
  2. Analice el archivo FLV y solo envíe el archivo solo al final de la primera I Frame. (Puede encontrar la lógica de análisis de código que le permite buscar en medio de un FLV por la marca de tiempo
+0

FFMPEG es la única solución que pude encontrar. Existen algunas librerías .NET que proporcionan un contenedor administrado alrededor de FFMPEG, pero no pude encontrar ninguna documentación sobre cómo usarlas. ¡Me interesa saber qué solución se te ocurre! –

+0

Acabo de pagar para ffmpeg y analizar el resultado. Funciona bien para mí y no es tan complejo o hacky como podría parecer. He leído acerca de la API C para ffmpeg, pero parece demasiado esfuerzo. –

4

Existen bibliotecas de código abierto que puede usar para hacer esto. Consulte OpenCVDotNet, un contenedor administrado .NET para OpenCV, una biblioteca de "visión por computadora". Here's a link to a tutorial puede serle útil.

+0

Mi primera impresión es que solo admite avi ... y necesitaré flv's para ser compatible. Pero tendré que verificar esto para estar seguro. –

1

Esto funciona:.

ShellFile thumbNail = ShellFile.FromFilePath(<fullpath and filename>); 
Bitmap thumbSmall = thumbNail.Thumbnail.MediumBitmap; 
Bitmap thumbLarge = thumbNail.Thumbnail.LargeBitmap; 
videoThumb_Small.Images.Add(thumbSmall); 
videoThumb_Large.Images.Add(thumbLarge); 

donde 'VideoThumb _ ?????' = ImageList (el que puede controlar el tamaño de la imagen para mostrar de nuevo) lento como el infierno en la búsqueda de diferentes formatos MIME, pero lo suficientemente rápido con los mismos tipos de necesidades:..

using Microsoft.WindowsAPICodePack.Shell; 
using Microsoft.WindowsAPICodePack; 

y se puede obtener a partir Microsoft.WindowsAPICodePack paquete con Nuget mismo nombre. En cuanto a FFMpeg, Vlc.Dotnet o aXMediaPlayer (WMP), todos apestan hasta donde he probado (Vlc ni siquiera funciona como debería, FFmpeg necesita 500 millones de líneas antes de obtener el mismo resultado y un XMediaPlayer bueno, heh) junto a ese nativo de Windows.

ejemplo, si está utilizando ListView con algo como subelementos incluso:

for(int mememe = 0; mememe < stuff_counter; mememe++) 
{ 
listview1.Items.Add("strings", mememe).SubItems.Add("strings" + mememe.ToString()); 
} 

entonces leer el número de índice correcto de ImageList

Cuestiones relacionadas