Utilizzando FFmpeg in .net?

Quindi so che è una sfida abbastanza grande, ma voglio scrivere un lettore / convertitore di film di base in c # usando la libreria FFmpeg. Tuttavia, il primo ostacolo che devo superare è il wrapping della libreria FFmpeg in c #. Ho scaricato ffmpeg ma non riesco a compilarlo su Windows, quindi ho scaricato per me una versione precompilata. Ok fantastico. Poi ho iniziato a cercare i wrapper C #.

Mi sono guardato attorno e ho trovato alcuni wrapper come SharpFFmpeg ( http://sourceforge.net/projects/sharpffmpeg/ ) e ffmpeg-sharp ( http://code.google.com/p/ffmpeg-sharp/ ). Prima di tutto, volevo usare ffmpeg-sharp come LGPL e SharpFFmpeg è GPL. Tuttavia, ha avuto parecchi errori di compilazione. Risulta che è stato scritto per il compilatore mono, ho provato a compilarlo con mono ma non riuscivo a capire come. Ho quindi iniziato a correggere manualmente gli errori del compilatore, ma ne ho trovati alcuni spaventosi e ho pensato che sarebbe meglio lasciarli soli. Quindi ho rinunciato a ffmpeg-sharp.

Poi ho guardato SharpFFmpeg e sembra quello che voglio, tutte le funzioni P / Invocato per me. Comunque la sua GPL? Entrambi i file AVCodec.cs e AVFormat.cs assomigliano alle porte di avcodec.c e avformat.c che, a mio avviso, potrei portarmi da solo? Quindi non preoccuparti delle licenze.

Ma voglio farlo bene prima di andare avanti e iniziare a programmare. Dovrei:

  1. Scrivi la mia libreria C ++ per interagire con ffmpeg, poi usa il mio programma C # per parlare con la libreria C ++ per riprodurre / convertire video, ecc.

O

  1. Port avcodec.h e avformat.h (è tutto ciò di cui ho bisogno?) In c # utilizzando un sacco di DllImports e lo scrivo interamente in C #?

Prima di tutto considero che non sono bravo in C ++, come raramente lo uso, ma ne so abbastanza per andare in giro. La ragione per cui sto pensando # 1 potrebbe essere l’opzione migliore è che la maggior parte delle esercitazioni di FFmpeg sono in C ++ e avrei anche più controllo sulla gestione della memoria rispetto a se dovessi farlo in c #.

Cosa ne pensi? Avresti anche qualche link utile (forse un tutorial) per usare FFmpeg?