2010-05-09 4 views

Répondre

0

Il n'y a pas vraiment moyen de le faire; mon conseil est d'utiliser ffmpeg, soit par l'utilisation d'un wrapper C# en l'appelant de l'extérieur. Il semble y avoir plusieurs wrappers C# pour ffmpeg (comme this one) mais ils semblent tous être à différents stades de développement et pas vraiment utilisables. Votre seule option sera probablement en l'appelant en externe.

+0

ffmpeg-sharp est incomplet et ancien. Avez-vous eu du succès avec ça? J'ai trouvé Tao un peu mieux, mais j'ai fini par l'appeler directement via un wrapper C++/CLI. –

+0

Il était essentiellement inutile pour la plupart des choses - comme je l'ai conseillé, j'ai fini par utiliser le système ffmpeg et la tuyauterie vers/de. Moins de contrôle mais suffisant pour une conversion simple entre les formats de conteneur. – TkTech

6

Cela dépend de ce que vous voulez dire par "convertir". Les formats 3GP et AVI sont tous deux des formats wrapper. Essayez-vous simplement de modifier le format du conteneur ou souhaitez-vous également réencoder les flux? De toute façon, vous devriez probablement regarder ffmpeg (Windows info). Pour les cas simples (c'est-à-dire que vous avez le fichier, voulez un seul fichier de sortie), vous devriez probablement l'appeler sur la ligne de commande (c'est-à-dire System.Diagnostics.Process), ce qui est beaucoup plus facile. Si vous souhaitez accéder libavcodec/libavormat programatically, je très recommande sauter tout wrapper .NET libs (ils sont tous dans des états différents de succion, Tao être le meilleur mais ne dit pas beaucoup) et de l'écriture à la place d'une enveloppe C++/CLI. J'ai started doing this, et une fois que j'ai eu ma tête autour de la collecte de données, etc, et compris comment le construire (Part 1, Part 2), ce n'était pas trop dur.