2013-07-24 19 views
11

Sto provando a scrivere un codice C# per estrarre ogni frame di un file .avi e salvarlo in una directory fornita. Conosci una libreria adatta da usare per questo scopo?Estrazione di frame di un file .avi

Nota: la versione finale deve funzionare su tutti i sistemi indipendentemente dal codec installato o dall'architettura di sistema. Non deve richiedere la presenza di un altro programma (come MATLAB) sulla macchina.

Grazie in anticipo. Tunc

risposta

12

Questo non è possibile, a meno che non si aggiungono alcune restrizioni al avi di ingresso file o avere il controllo su codificatore utilizzato per crearli. Per ottenere un'immagine devi prima decodificarla, e per questo avrai bisogno di un codec appropriato installato o distribuito con la tua app. E dubito che sia possibile tenere conto di ogni codec là fuori o installarlo/distribuirli tutti. Quindi no, non sarai in grado di aprire un qualsiasi file avi. Puoi, tuttavia, supportare i codec più popolari (o comuni nel tuo contesto).

Il modo più semplice per farlo è utilizzare FFMPEG, poiché include alcuni dei codec più comuni (se non ti dispiace aggiungere 30 + Mb aggiuntivi alla tua app). Per quanto riguarda i wrapper, ho usato il wrapper AForge in passato e mi è piaciuto molto, a causa di quanto sia semplice lavorare con. Ecco un esempio dalla sua documentazione:

// create instance of video reader 
VideoFileReader reader = new VideoFileReader(); 
// open video file 
reader.Open("test.avi"); 
// read 100 video frames out of it 
for (int i = 0; i < 100; i++) 
{ 
    Bitmap videoFrame = reader.ReadVideoFrame(); 

    videoFrame.Save(i + ".bmp") 

    // dispose the frame when it is no longer required 
    videoFrame.Dispose(); 
} 
reader.Close(); 

C'è anche un VfW (che è incluso in Windows per impostazione predefinita) involucro in AForge, se si vuole mantenere le cose semplici senza coinvolgere librerie esterne. Avrai comunque bisogno di codec VfW compatibili installati (alcuni sono inclusi in Windows per impostazione predefinita, la maggior parte non lo sono).

+1

Per quelli che richiedono una semplice libreria per lavorare su video .avi, ho usato AForge. È gratuito e non aumenta molto le dimensioni del programma. Ho usato la libreria VFW poiché non ero in grado di far funzionare FFMPEG, ma è davvero facile estrarre i frame a condizione che la macchina abbia il codec corretto per il video .avi specifico. – talkanat

Problemi correlati