72 votes

Utiliser FFmpeg en .net ?

Je sais que c'est un défi assez important mais je veux écrire un lecteur/convertisseur de films de base en c# en utilisant la bibliothèque FFmpeg. Cependant, le premier obstacle que je dois surmonter est d'envelopper la bibliothèque FFmpeg en c#. J'ai téléchargé ffmpeg mais je n'ai pas pu le compiler sous Windows, alors j'ai téléchargé une version précompilée pour moi. Ok génial. Ensuite, j'ai commencé à chercher des wrappers C#.

J'ai cherché un peu partout et j'ai trouvé quelques wrappers comme SharpFFmpeg ( http://sourceforge.net/projects/sharpffmpeg/ ) et ffmpeg-sharp ( http://code.google.com/p/ffmpeg-sharp/ ). Tout d'abord, je voulais utiliser ffmpeg-sharp car il est LGPL et SharpFFmpeg est GPL. Cependant, il avait un certain nombre d'erreurs de compilation. Il s'avère qu'il a été écrit pour le compilateur mono, j'ai essayé de le compiler avec mono mais je n'ai pas trouvé comment. J'ai alors commencé à corriger manuellement les erreurs de compilation moi-même, mais je suis tombé sur quelques erreurs effrayantes et j'ai pensé que je ferais mieux de les laisser tranquilles. J'ai donc abandonné ffmpeg-sharp.

Ensuite, j'ai regardé SharpFFmpeg et il ressemble à ce que je veux, toutes les fonctions P/Invoked pour moi. Cependant, il est sous GPL ? Les deux fichiers AVCodec.cs et AVFormat.cs ressemblent à des ports de avcodec.c et avformat.c que je pense pouvoir porter moi-même ? Et je n'aurais pas à me soucier de la licence.

Mais je veux que ce soit bien fait avant de commencer à coder. Je devrais :

  1. Écrire ma propre bibliothèque C++ pour interagir avec ffmpeg, puis faire en sorte que mon programme C# communique avec la bibliothèque C++ pour lire/convertir les vidéos, etc.

OU

  1. Porter avcodec.h et avformat.h (est-ce tout ce dont j'ai besoin ?) en C# en utilisant un grand nombre de DllImports et l'écrire entièrement en C# ?

Tout d'abord, sachez que je ne suis pas un grand spécialiste du C++, car je l'utilise rarement, mais j'en sais assez pour me débrouiller. La raison pour laquelle je pense que le numéro 1 pourrait être la meilleure option est que la plupart des tutoriels FFmpeg sont en C++ et que j'aurais également plus de contrôle sur la gestion de la mémoire que si je devais le faire en C#.

Qu'en pensez-vous ? Auriez-vous également des liens utiles (peut-être un tutoriel) pour utiliser FFmpeg ?

0 votes

0 votes

Pourquoi ne pas faire quelque chose comme C# -> DirectShow -> FFMPEG ? Cela peut être hors sujet, mais assurez-vous également que vous ne finissez pas sur ffmpeg.org/shame.html

1voto

voltagex Points 704

Pourquoi ne pas faire quelque chose comme C# -> DirectShow -> FFMPEG ?

C'est peut-être hors sujet, mais assurez-vous aussi de ne pas vous retrouver sur http://ffmpeg.org/shame.html

0voto

Ilya Points 417

Vous pouvez essayer un simple wrapper ffmpeg .NET à partir d'ici : http://ivolo.mit.edu/post/Convert-Audio-Video-to-Any-Format-using-C.aspx

0 votes

Le lien indiqué ci-dessus semble être mort.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X