2011-07-16 12 views
15

Buscando un envoltorio FFmpeg utilizable en .NET. El contenedor debe ser compatible con la reproducción de video con audio.Contenedor .FFmpeg .NET para reproducción de video

Los siguientes proyectos son incompletas envoltorios de FFmpeg:

http://code.google.com/p/ffmpeg-sharp/

http://sourceforge.net/projects/sharpffmpeg/

http://sourceforge.net/projects/ffqlay/

http://www.ffmpeg-csharp.com/

http://www.intuitive.sk/fflib/post/fflib-net-released.aspx

ffmpeg-sharp es lo más parecido que he encontrado, pero también está incompleto (no hay audio en la reproducción de video).

Estoy bastante seguro de que existen envoltorios propietarios estables, por lo que otorgaré el premio a cualquiera que esté dispuesto a compartir el código o pueda encontrar una versión de terceros completa.

+0

posible duplicado de [Contenedor FFmpeg sólido para C# /. NET] (http://stackoverflow.com/questions/2163036/solid-ffmpeg-wrapper-for-c-net) –

+0

En realidad, este es aún más antiguo: [¿Alguien sabe de un conjunto de enlaces C# para FFMPEG?] (Http://stackoverflow.com/questions/271003/anyone-know-of-a-set-of-c-bindings-for-ffmpeg/7251200#7251200) –

+0

Consulte [SharpFFmpeg] (http://sharpffmpeg.sourceforge.net/). – Shimmy

Respuesta

-1

Actualmente, no hay una solución estable para esto, por lo que la mejor idea probablemente es esperar hasta que alguien la complete.

2

¿Ya has visto VLC Media Player? Es un reproductor de medios con todas las funciones que utiliza los códecs del proyecto FFmpeg. Puede hacer uso de su funcionalidad principal y hay un proyecto de envoltura recientemente actualizado en SourceForge y un tutorial en The Code Project si desea crear el suyo propio. No he usado ninguno de estos personalmente, pero parecen bastante sencillos de usar.

+0

1. El paquete VLC es demasiado grande. 2. Necesita ser instalado para funcionar correctamente (lo mismo que instalar códecs). – SharpAffair

3

Por lo que sé, no hay una manera limpia de utilizar ffmpeg desde C# a través de P/Invoke, por lo tanto, todas estas envolturas son proyectos incompletos. Lo que puede hacer es crear un proceso en ffplay.exe (descargar en compilaciones compartidas) y pasarle argumentos de línea de comando. De lo contrario, sugiero usar WPF o Silverlight MediaElement, según sus necesidades; tiene un soporte bastante decente para la mayoría de las tareas básicas, como la reproducción de video y audio.

0

estoy seguro de que las envolturas de propiedad estables sí existen

yo pasamos una buena cantidad de tiempo a finales del año pasado en busca de uno mismo, sin éxito.

7

Hay una gran solución para unir FFmpeg en C#. Use el FFmpeg.Autogen de: https://github.com/Ruslan-B/FFmpeg.AutoGen. ¡También proporciona un buen ejemplo al descargar la fuente (y viene con ffmpeg precompilado para 32 y 64 bits)!

+0

He usado el envoltorio FFmpeg de Ruslan y hasta ahora es el mejor que he encontrado. Si necesita reproducción de audio y video, pruebe mi implementación de MediaElement (usando AutoGen). El código fuente está disponible aquí: https://github.com/unosquare/ffmediaelement – Mario

1

No creo que exista tal cosa y, francamente, la API de ffmpeg todavía es algo inestable, por lo que incluso si hay algo hoy que satisfaga sus necesidades hay una posibilidad no despreciable de que 2 años después ya no funcione/mantenerse actualizado. Además, la recopilación de datos entre el código administrado y el nativo es relativamente costosa. El 99% de las veces esto no importa, pero en el caso de que se trate con medios (especialmente fotogramas de video sin comprimir) puede tener un impacto notable en el rendimiento.

IMO la mejor manera de lidiar con ffmpeg desde C# es escribir su lógica de interacción en C y exponer una API de nivel superior que puede p/invocar desde C#. Este seguiría siendo el caso si hubiera un contenedor adecuado de bajo nivel disponible.

Cuestiones relacionadas