C#でAForge.NET Frameworkを導入する方法

AForge.NETに関するキーワードでアクセスしていただける場合があるにも関わらず、以前書いた記事では導入方法を詳しく書いてはいませんでした。
これではせっかく来ていただいた方に満足していただけないと思ったので、今回改めてc#でAForge.NET Frameworkを導入する方法について書いてみました。

注意事項

AForgeにはいろいろな機能がありますが、ここでは動画を書き出す機能に着目して記事を書いています。

他の機能が目当てでも導入方法は同じなので参考になると思います。

AForge.NET Frameworkの導入方法

NuGetを利用する

NuGetに対応していれば簡単にインストールすることができます。
しかし、ライブラリの全てがNuGetに対応している訳ではありません。
NuGetに対応していないものは公式サイトからダウンロードする必要があります。

動画を書き出す目的ならNuGetは利用できないので公式サイトからダウンロードする必要があります。

NuGetパッケージの管理を起動する

2つのやり方があります。
どちらがどう違うのかは詳しくないので分かりません。
いえ、何となくは分かりますけど正しい説明ができません。

プロジェクトのNuGetパッケージの管理から起動する場合

メニューから「プロジェクト」>「NuGetパッケージの管理」を選びます。

AForge.NET導入 NuGet0

ソリューションのNuGetパッケージの管理の場合

メニューから「ツール」>「NuGetパッケージマネージャー」>「ソリューションのNuGetパッケージの管理」を選びます。

AForge.NET導入 NuGet1

AForge.NETを検索する

検索欄に「AForge.NET」と入力して検索しましょう。
NuGetに対応しているライブラリが表示されます。

AForge.NET導入 NuGet2

インストールしたいライブラリを選択し、「インストール」ボタンを押しましょう。
「プロジェクトの選択」というウィンドウが表示されますが、デフォルトのままで問題ないでしょう。
「OK」を押せばインストール開始です。

ちなみに関連する必要なライブラリも自動的にインストールされます。

公式サイトからダウンロードする

NuGetではAForge.NETの一部のライブラリのみ対応しています。
それ以外のライブラリは公式サイトからダウンロードする必要があります。

公式サイトは次のものです。
http://www.aforgenet.com/

AForge.NET Frameworkのバナーをクリックします。

AForge.NET導入 公式サイト1

左側のメニューから「Downloads」をクリックします。

AForge.NET導入 公式サイト2

4つほどダウンロードできるものが表示されました。

自分で好きな場所にインストールしたいので「Download Full ZIP Archive」を選んでみました。

AForge.NET導入 公式サイト3

ダウンロードが終わったら適当なフォルダに解凍しましょう。

参照を設定する

NuGetを利用した場合は自動的に設定されているので参照を設定する必要はありません。
公式サイトからダウンロードした場合は参照の設定が必要です。

「プロジェクト」から「参照の追加」を選びます。

AForge.NET導入 参照1

「参照マネージャー」のウィンドウが開くので「参照」ボタンを押しましょう。

先ほど解凍したフォルダの「Release」というフォルダに各種DLLファイルがあります。
必要なものを選びましょう。

動画を書き出すなら「AForge.Video.VFW.dll」が必要です。

「OK」を押して参照マネージャーを終了させます。

簡単なサンプル

AForge.Video.VFW.dllを利用した簡単なサンプルです。

まずはAForge.Video.VFW.dllを参照先に追加しておきましょう。

namespaceでAForge.Video.VFWを定義する

AForge.Video.VFWを利用できるよう、忘れずにnamespaceで定義しておきましょう。

using System;みたいな宣言が並んでいるところに次の1行を追記しておきましょう。

using AForge.Video.VFW;

ボタンをクリックしたらイベントが起動するようにする

デザイナーでボタンを追加し、ボタンをクリックしたらイベントが起動するようにしましょう。
難しく考えないでも配置したボタンをダブルクリックすれば多分大丈夫です。

そして自動的に生成されたものに手を加えましょう。

テストのために次のようなものを作ってみました。

private void button1_Click(object sender, EventArgs e)
{
	AVIWriter aviWriter = new AVIWriter();
	Bitmap bitmap = new Bitmap(640,360);
	Graphics g = Graphics.FromImage(bitmap);

	aviWriter.FrameRate = 30;   // フレームレート設定
	aviWriter.Open("test.avi", 640, 360);   // aviファイルストリームを生成

	for(int i = 0; i < 300; i++)
	{
		g.Clear(Color.Black);   // 指定色で塗りつぶし
                g.DrawString("" + i.ToString("d2"), new Font("MS UI Gothic", 64), Brushes.BlanchedAlmond, 10f, 10f);
	    aviWriter.AddFrame(bitmap);
	}
	aviWriter.Close();
}

完成形

最終的にこのようなものになりました。

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.Video.VFW;

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

        private void button1_Click(object sender, EventArgs e)
        {
            AVIWriter aviWriter = new AVIWriter();
            Bitmap bitmap = new Bitmap(640, 360);
            Graphics g = Graphics.FromImage(bitmap);

            aviWriter.FrameRate = 30;   // フレームレート設定
            aviWriter.Open("test.avi", 640, 360);   // aviファイルストリームを生成

            for (int i = 0; i < 300; i++)
            {
                g.Clear(Color.Black);   // 指定色で塗りつぶし
                g.DrawString("" + i.ToString("d2"), new Font("MS UI Gothic", 64), Brushes.BlanchedAlmond, 10f, 10f);
                aviWriter.AddFrame(bitmap);
            }
            aviWriter.Close();
        }
    }
}

実行結果

多分プロジェクトのbin\Debugというフォルダに非圧縮の動画ファイルが生成されます。
1フレームごとに何フレーム目か数字が表示されています。
(1フレーム目が0と表示されてしまうことに後から気づきました。)

問題点

このようにして動画ファイルを書き出せるようになりましたが、問題点もあります。

音声を出力できない

AForge.Video.VFWでは音声を入れられなさそうなので、音声は別の編集ソフトを使うことになりそうです。

容量に制限がある

AForge.Video.VFWはVideo for Windowsという古い技術を利用しているので、書き出せる動画の容量が2GBまでという制限があります。
非圧縮では簡単に容量オーバーになってしまいます。

終わりに

以前の読みにくい解説にすらなっていないような記事では申し訳ないので今回の記事を書いてみました。
この記事が多少でも皆様のお役に立てれば幸いです。

スポンサーリンク
レクタングル(大)
レクタングル(大)

フォローする

スポンサーリンク
レクタングル(大)