2008-10-16 14 views
1

Je travaille sur notre service de codeur back-end qui fait énormément de transcodage vidéo, et une très petite quantité de fichiers vidéo. Le transcodage est fait en utilisant le moteur On2 Flix pour Windows qui fonctionne très bien, mais malheureusement il ne peut pas joindre de fichiers (du moins autant que je puisse le vérifier - ni l'aide ni le support ne sont très instructifs) . Je suis content de ça pour le moment. La jointure, pour le moment, se fait à l'aide du logiciel LEADTOOLS Multimedia qui est, franchement, redoutable. C'est un thread unique et nécessite STA car il utilise une pompe de message qui n'est pas exactement souhaitable pour une application serveur. De plus, l'installation écrase tous nos codecs de travail avec une charge de ses propres tests, et il n'y a aucun moyen d'éviter cela.Windows (idéalement .NET appelable) API pour rejoindre les fichiers MP4 et/ou 3GP?

Idéalement je cherche une API pour remplacer la LEADTOOLs Multimedia, qui peut joindre des fichiers 3GP et/ou MP4. Le coût n'est pas trop un problème. Quelqu'un a-t-il des recommandations? Je sais que la solution idéale est d'écrire notre propre outil ici, mais nous avons l'intention de le faire en WMF et ne sommes pas encore passés à Win2008, nous avons donc besoin d'une solution temporaire pour quelques mois.

Mise à jour:

Je tiens à souligner que le codage est pas mon domaine d'expertise, et je ne l'ai jamais eu beaucoup de traiter du code non managé étant relativement nouveau dans l'industrie (7 ans). Je n'ai pas non plus beaucoup de temps car mon job de jour est dev lead de l'équipe services/encodeurs qui ne comprend que moi et une autre personne, donc nous n'avons pas beaucoup de temps à consacrer à l'encodeur .

Quelque chose comme le moteur Flix où beaucoup de la complexité sous-jacente est déjà traitée est plus ce que je suis à la recherche d'API de bas niveau qui doivent être appelés différemment selon les types d'entrée/fichier de sortie, etc.

Si vous avez des recommandations, ce serait vraiment utile si vous pouviez me montrer certains documents pour savoir comment ils sont utilisés, etc.

Répondre

2

Libavcodec et libavformat de FFMPEG sont vos amis. Ils sont extrêmement polyvalents et prennent en charge plus que n'importe quoi d'autre, et sont effectivement la norme multiplateforme pour le support et la manipulation multimédia. Vous pouvez également essayer la bibliothèque MP4box, GPAC, qui est une bibliothèque spécifique à la MP4, beaucoup plus puissante que les API de FFMPEG, mais qui n'est (au vu de son nom) utile que pour gérer les fichiers MP4 et 3GP.

En outre, si vous utilisez Flix pour le transcodage, avez-vous envisagé de passer à quelque chose de plus moderne? FLV1 et VP6 sont des formats plutôt mauvais pour la vidéo instantanée; maintenant que Flash prend en charge H.264, il n'y a vraiment aucune raison de continuer à utiliser ces formats obsolètes (et, dans le cas de VP6, coûteux).

+0

La dernière version du moteur Flix prend en charge MP4/H.264 sur laquelle nous passons maintenant à la version 9.0.115.0 de Flash requise qui a une pénétration de marché> 90% (nous sommes trop petits pour nécessiter une mise à niveau des utilisateurs). Je vais jeter un coup d'oeil aux deux que vous mentionnez, à votre santé! –

+0

Je vous suggère d'utiliser un meilleur codeur H.264; Flix n'est pas connu pour sa vitesse ou sa qualité. Je recommande fortement x264, car il est à la fois rapide, polyvalent et possède une API relativement simple que vous pouvez appeler directement depuis votre application. En outre, sa qualité est fondamentalement inégalée. –

+0

x264 semble intéressant car je n'ai pas été impressionné par la qualité de sortie de Flix. Quand vous dites qu'il y a une API, voulez-vous dire commencer par le processus ou ajouter une référence et l'utiliser en cours? Je ne peux pas voir un moyen de générer un assembly interop pour le référencer. –

0

Pour x264: vous pouvez simplement appeler l'exécutable lui-même, ou vous pouvez inclure la bibliothèque elle-même et l'appeler via son API (encoder_open, etc.). Avec .NET est probablement plus difficile; étant un programme C, son API est construite autour de C, bien que je sache que des programmes C et C++ sur Windows et Linux ont été construits pour appeler l'API. Il n'y a pas de réel avantage pour l'un par rapport à l'autre pour un programme simple: de toute façon, x264 ne prend qu'un seul type d'entrée (vidéo brute YV12) et crache un seul type de sortie (flux élémentaires H.264, ou dans le cas de l'application CLI, il peut aussi mux MP4 et Matroska).

Si vous avez besoin d'une solution tout-en-un, ffmpeg peut faire le travail, car il peut gérer automatiquement le décodage et transmettre le codage à libx264. Si vous avez besoin d'une assistance plus spécifique, déposez # x264 sur Freenode IRC.