Je suis complètement nouveau à l'entrée vidéo, et j'ai commencé à travailler avec AForge il y a quelques jours. Travailler avec la vidéo en direct est confortable, mais je dois faire quelque chose avec des fichiers pour un projet maintenant. En utilisant le codec VCM Windows Media Video 9, l'enregistrement n'a pas posé de problème. Le fichier de sortie fonctionne normalement avec tous les lecteurs que j'ai, mais mon programme le lit toujours à environ deux fois la fréquence d'images. Ceci est particulièrement étrange car il n'y a jamais aucune indication que la fréquence d'images est changée: à la fois la vidéo par défaut a été enregistrée avec et le nouveau lecteur indique que la fréquence d'images est de 25 fps.Diminuer le framerate d'un fichier AVI dans AForge
Les seules suggestions que j'ai trouvées sont de changer la fréquence d'image avant que la vidéo soit capturée, mais cela semble ne rien faire.
En parcourant la documentation de AVIFileVideoSource, j'ai trouvé les propriétés FrameIntervalFromSource et FrameInterval qui, ensemble, devraient me donner les résultats que je recherche, mais je ne peux pas les faire fonctionner non plus. Tout le reste a été une impasse et je n'ai plus d'idées. Voici le code que j'utilise pour lire le fichier:
public partial class Form1 : Form
{
AVIReader input = new AVIReader();
AVIFileVideoSource source = new AVIFileVideoSource("test.avi");
public Form1()
{
InitializeComponent();
}
public void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
input.Open("test.avi");
for (int i = 0; i < input.Length; i++)
{
pictureBox1.Image = input.GetNextFrame();
}
source.Stop();
input.Close();
}
private void button1_Click(object sender, EventArgs e)
{
source.NewFrame += new NewFrameEventHandler(cam_NewFrame);
source.Start();
}
private void button2_Click(object sender, EventArgs e)
{
source.Stop();
input.Close();
}
}
Toutes les autres suggestions seraient grandement appréciées. Merci pour votre temps.