我在AForge nuget中遇到FileVideoSource类的问题。 我目前能够从笔记本电脑摄像头捕捉视觉并检测其上的运动。 现在我想做同样的事情,但是使用文件中的视频,但我甚至无法访问视频并显示它。
我有以下代码:
...
private void button1_Click(object sender, EventArgs e)
{
// var existTest = File.Exists("test.avi");
var videoFile = new FileVideoSource("test.avi");
videoFile.NewFrame += new NewFrameEventHandler(video_NewFrame);
videoFile.Start();
}
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
var img = eventArgs.Frame;
pictureBox1.Image = img;
}
调试后我确保自己找到了文件(用File.Exists()方法检查),但之后几乎没有发生任何事情。我试图在video_NewFrame FrameEventHandler中设置断点,但它永远不会到达。
我还尝试过.mpg文件而不是.avi。同样的情况。我可以用WMP播放这两个视频文件,所以我认为这不是编解码器问题。两个视频文件都存储在我的输出Debug文件夹中。
有人可以帮助我吗?
答案 0 :(得分:0)
我有完全相同的问题。原来,编解码器是罪魁祸首。尝试从https://www.codecguide.com/download_k-lite_codec_pack_mega.htm
下载它们我的第一步(不是很第一步)是捕获视频错误:
fileVideo.VideoSourceError += new VideoSourceErrorEventHandler(videoSource_Error);
和
private void videoSource_Error(object sender, VideoSourceErrorEventArgs eventArgs)
{
Console.WriteLine(eventArgs.Description);
}
我收到“在给定的源中找不到可接受的输出视频引脚”,然后安装了编解码器,现在正在播放视频。