[英]Why is only one of my event handlers fired?
我想同時錄制來自兩個網絡攝像頭的視頻。 我正在使用 Aforge.Video.DirectShow 包從網絡攝像頭捕獲每一幀。 我從他們網站上顯示的示例開始,然后添加了第二個攝像頭。
但我遇到的問題是只有一個用於處理新幀的事件處理程序被觸發。 在下面的示例代碼中,它是 _NewFrameHandler2。
我有一種感覺,我在這里遺漏了一些明顯的東西......
public class Camera
{
private VideoCaptureDevice objCamera1;
private VideoCaptureDevice objCamera2;
public void Start()
{
FilterInfoCollection objVideoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
objCamera1 = new VideoCaptureDevice(objVideoDevices[0].MonikerString);
objCamera2 = new VideoCaptureDevice(objVideoDevices[1].MonikerString);
objCamera1.VideoResolution = objCamera1.VideoCapabilities[objCamera1.VideoCapabilities.Count() - 1];
objCamera2.VideoResolution = objCamera2.VideoCapabilities[objCamera2.VideoCapabilities.Count() - 1];
objCamera1.NewFrame += new NewFrameEventHandler(_NewFrameHandler1);
objCamera2.NewFrame += new NewFrameEventHandler(_NewFrameHandler2);
objCamera1.Start();
objCamera2.Start();
}
public void Stop()
{
objCamera1.Stop();
objCamera2.Stop();
}
private void _NewFrameHandler1(object sender, NewFrameEventArgs eventArgs)
{
Bitmap objFrame = (Bitmap)eventArgs.Frame;
Console.WriteLine("1");
}
private void _NewFrameHandler2(object sender, NewFrameEventArgs eventArgs)
{
Bitmap objFrame = (Bitmap)eventArgs.Frame;
Console.WriteLine("2");
}
}
我想我已經想通了。 我在相機對象上調用 .Start() 函數之間添加了 500 毫秒的延遲。
System.Threading.Thread.Sleep(500);
現在它起作用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.