我遇到了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文件夹中。
谁能帮帮我吗?
我有同样的问题。事实证明,编解码器是罪魁祸首。尝试从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);
}
我得到“在给定的源中找不到可接受的输出视频引脚”,然后我安装了编解码器,视频正在播放。