我對視頻輸入是全新的,並且剛剛在幾天前開始與AForge合作。使用實時視頻很舒服,但我現在需要爲項目的文件做些事情。降低AForge中AVI文件的幀率
使用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();
}
}
任何其他建議將不勝感激。感謝您的時間。