我对视频输入完全陌生,几天前才开始使用 AForge。使用实时视频很舒服,但我现在需要对项目的文件做一些事情。
使用 Windows Media Video 9 VCM 编解码器,保存不是问题。输出文件在我拥有的每个播放器上都能正常工作,但我的程序总是以大约两倍的帧速率播放它。这特别奇怪,因为从来没有任何迹象表明帧速率发生了变化:保存视频的默认值和新播放器都表明帧速率是 25 fps。
我发现的唯一建议是在捕获视频之前更改帧速率,但这似乎无济于事。
在 AVIFileVideoSource 文档中环顾四周,我发现 FrameIntervalFromSource 和 FrameInterval 属性,它们一起应该给我我正在寻找的结果,但我也无法让它们工作。其他一切都是死胡同,我没有想法。这是我用来读取文件的代码:
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();
}
}
任何其他建议将不胜感激。感谢您的时间。