在C#中从图像中提取帧

时间:2015-07-31 06:44:46

标签: c# ffmpeg

我看到了一些关于如何做到这一点的流程,但我不能让它在视觉工作室为自己工作。

代码有什么问题?我已经下载了FFMpeg并使用它作为参考。然而,我收到了错误

  

"无法加载文件或程序集Aforge.Video.FFMPEG。 dll或其中之一   它的依赖关系"

这是代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AForge;
using AForge.Video;
using AForge.Video.FFMPEG;

namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // create instance of video reader
        VideoFileReader reader = new VideoFileReader( );
        // open video file
        reader.Open( "test.avi" );
        // read 100 video frames out of it
        for ( int i = 0; i < 100; i++ )
        {
        Bitmap videoFrame = reader.ReadVideoFrame( );

        videoFrame.Save(i + ".bmp");

        // dispose the frame when it is no longer required
        videoFrame.Dispose( );
        }
        reader.Close( );
    }
} 
}

单击按钮时程序停止并出现错误。

3 个答案:

答案 0 :(得分:0)

看起来dll可能已被移动/删除(或)可能未签入。通常,最佳做法是将它们添加到项目中的库文件夹(例如libbin)中。因此,当您签入您的内容时,所有库文件也会被签入,并且您的引用也完好无损。

由于dll似乎是外部的,我希望你浏览它并添加引用。

您可以复制项目中的dll文件(最好在lib文件夹中),然后再添加参考文件吗?

看起来Visual Studio添加了引用,但它无法找到该文件。

我猜这样做会解决你的问题。

答案 1 :(得分:0)

您可能还需要检查构建项目的方式。某些DLL可能只能在x86或x64构建配置下工作。也许不是父dll直接,而是内部使用的引用。

答案 2 :(得分:0)

您需要在bin文件夹中添加来自AForge.NET \ Framework \ Externals \ ffmpeg的dll,并确保您正在运行32位(项目属性 - &gt; debug - &gt; platform - &gt; x86 < / p>