2010-06-22 9 views
1

Je dois travailler avec FFmpeg pour fenêtres mobiles avec C#, en fait, je veux construire joueur pour .m4b, .m4a fichiers. Je sais que le TCPMP existe, mais je veux faire le mien. donc je veux utiliser .Net, et j'ai quelques questions:ffmpeg sur windows mobile avec C#

  1. Si j'utilise quelques C# enrubanneuse FFmpeg, par exemple TaoFramework, il fonctionnera sur Windows Mobile (en cas si j'utilise FFmpeg lib compilé pour Windows Mobile)?

  2. Dans wiki FFmpeg J'ai trouvé ce

Une fois que vous avez compilé ou téléchargé, les DLL Windows pour FFmpeg, vous pouvez utiliser .Net Platform Invoke (PI) pour accéder au fonctions dans les bibliothèques libavformat et libavcodec. Link to source...

Mais je ne sais pas comment puis-je utiliser? J'ai essayé de le faire avec dll que j'avais téléchargé de http://ffmpeg.arrozcru.org/autobuilds/. Peut-être que j'ai besoin de compiler ffmpeg par moi-même pour cette option?

Et la dernière question est: qu'est-ce que libavcodec? Quand j'ai téléchargé la construction partagée, j'ai avcodec-52.dll, avfilter-1.dll, ffmpeg.exe, mais je ne trouve pas libavcodec.dll, ou c'est juste alias?

Répondre

2

Il y a beaucoup de questions ici et un tas de choses que vous devez comprendre. Tout d'abord, la logique de base du lecteur lui-même aura presque certainement besoin d'être en code natif pour éviter la possibilité d'une GC (Garbage Collect). Pendant un GC, tous les threads gérés sont suspendus, et lors de la lecture vidéo ou audio, c'est un problème. Cela signifie que si vous voulez que votre application soit en code managé (ce qui est bien), alors vous aurez besoin d'une solution hybride. Cela signifie que vous devez comprendre, et pour cette application tout à fait correctement, comment le code natif fonctionne et comment le code géré interagit avec le code natif.

Maintenant, s'il existe des bibliothèques FFmpeg existantes (je vais prendre votre travail pour cela, je ne sais rien de FFmpeg) alors la première chose que vous devez faire est de déterminer si elles ont compilé spécifiquement pour Windows CE. Si ce n'est pas le cas, vous devrez déterminer à quel point il sera difficile de construire ce port, et le fait que vous me posiez cette question me porte à croire que faire un port de cette ampleur va être très difficile pour vos compétences actuelles ensemble. Si elles ont une version pour Windows CE alors vous devez comprendre quelle est l'interface de programmation pour cela. S'il se trouve qu'il s'agit de classes C++, vous ne pouvez pas l'appeler directement à partir du code managé, donc vous devez écrire, en code natif, une bibliothèque "shim" qui expose les points d'entrée C et qui fera toutes les allocations C++ et appelle pour vous.Une fois que vous avez tout cela fait, vous pouvez alors regarder la tâche d'appeler soit l'interface C de l'interface ou de l'interface C de librariy à partir du code managé via l'appel de plate-forme.

Fondamentalement, vous avez beaucoup de travail à faire et il n'y a pas d'article définitif que je peux vous indiquer qui vous guidera d'un bout à l'autre. Voici quelques liens pour vous aider à démarrer. Si vous pleinement comprendre chacun d'entre eux, alors vous aurez probablement la bonne connaissance pour écrire une enveloppe autour d'une mise en œuvre existante (pas nécessairement pour écrire l'implémentation de base du joueur lui-même).