2009-12-08 15 views
11

Hay una cámara web IP que escribí una clase .NET hace algún tiempo. Básicamente es una implementación de temporizador que ejecuta una secuencia de comandos instantánea CGI desde la cámara cada cinco segundos. La cámara en sí es muy crítica; no tiene ningún tipo de API con la que trabajar, lo único que puedo hacer mediante programación (remotamente) es invocar este script. El script devuelve una imagen JPEG de 640x480. Sencillo.Crear una secuencia de video (AVI) desde una serie de imágenes

Ahora lo que necesito hacer es tomar un día de estas imágenes, y crear un flujo de video AVI de "lapso de tiempo" que finalmente se integrará en una página web. ¿Cómo puedo hacer esto con VB.NET?

+2

Echa un vistazo a este proyecto: http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx –

+0

Nice !! ¿Eres el mismo nobugz de los foros de MSDN? –

Respuesta

15

.net no admite formatos de video directamente. Su mejor opción sería usar una herramienta de terceros para generar .avi.

ffmpeg es una opción. Se podía acceder a él directamente a través de una línea de comando como este:

ffmpeg -f image2 -i img%d.jpg /output/a.mpg 

Usted tendría que nombrar a su img1.jpg imágenes, etc. img2.jpg Para más detalles ver la ffmpeg faq. También debería encontrar detalles en el faq de cómo generar diferentes formatos de video.

Puede iniciar un proceso de VB utilizando Process.Start(). Algo como esto:

Process.Start("ffmpeg.exe", "-f image2 -i img%d.jpg /output/a.mpg") 

También puede echar un vistazo a ffmpeg-sharp o Tao.FFmpeg, son envoltorios de .NET para las bibliotecas FFmpeg. No lo he intentado personalmente, pero parece que podría ayudarte.

Otra alternativa sería la de echar un vistazo a MEncoder, que tiene una funcionalidad similar. Debería poder buscar una línea de comando similar para esta herramienta.

[Relacionado SO pregunta: 271003]

+0

Parece una buena solución. Estaba esperando una biblioteca, pero puedo iniciar este proceso por separado sin ningún problema. –

+0

@Josh. He agregado algunos enlaces a las bibliotecas contenedoras que es posible que desee verificar. –

+0

ffmpeg-sharp no se compila, y no puedo encontrar ningún lugar para descargar Tao.FFmpeg –

0

Hay varias herramientas de línea de comandos que pueden tomar una serie de imágenes y de salida de un archivo AVI. Sugeriría que llames a uno de ellos desde tu aplicación.

I establece enlaces a sugerencias, pero ha sido años desde que he usado uno.

Editar: al parecer, puede hacerlo usando ffmpeg: http://ffmpeg.org/ffmpeg-doc.html

Para crear un vídeo de muchas imágenes:

ffmpeg -i -f imagen2 foo-% 03d.jpeg -r 12 - es WxH foo.avi

la sintaxis foo-% 03d.jpeg especifica a utilizar un número decimal compuesta de tres dígitos rellena con ceros para expresar el número de secuencia. Es la misma sintaxis compatible con la función C printf , pero solo son adecuados los formatos que aceptan un entero normal .

+1

Maldición, demasiado tarde. Otros publicaron mientras estaba agregando mi edición. – Jermismo

1

Este es un C# envoltorio por alguien en CodeProject:

http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx

Ese envoltorio debe ofrecerle lo que necesita.

+0

nobugz proporcionó ese enlace en el comentario. –

+0

Ah, no estaba allí cuando publiqué esta respuesta (no había refrescado la página) –

Cuestiones relacionadas