はじめに (対象読者・この記事でわかること)

この記事は、Linux環境でAvisynthplusを利用したいと考えている方、または動画処理スクリプトの自動化や開発に興味のあるエンジニアを対象としています。Avisynthplusは通常Windows環境での利用が主流ですが、Linuxサーバーや開発環境で活用したいケースは少なくありません。

この記事を読むことで、AvisynthplusをLinux環境でソースコードからビルドするための具体的な手順と、ビルド中に遭遇しやすい一般的なエラーとその解決策がわかります。これにより、Linux上で独自の動画処理パイプラインを構築したり、既存のワークフローにAvisynthplusを組み込んだりするための第一歩を踏み出せるようになるでしょう。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。 - Linuxの基本的なコマンド操作 (パッケージ管理、ファイル操作) - C++のコンパイルに関する基本的な知識 (gcc/g++, makeなど) - Gitの基本的な操作

Avisynthplusとは?Linuxでのビルドの重要性

Avisynthplusの概要

Avisynthplus(AviSynth+)は、高機能な動画スクリプトインターフェースであり、プログラマブルな動画編集を可能にするフレームサーバーです。動画ファイルを直接編集するのではなく、スクリプト言語(AviSynth Script)を使って動画の処理(フィルター適用、切り出し、結合など)を記述し、そのスクリプトを介して動画を他のアプリケーションに渡します。これにより、非破壊的な編集や複雑な処理の自動化が非常に容易になります。

主な特徴としては以下の点が挙げられます。 - スクリプトベースの編集: テキストエディタでスクリプトを書くだけで高度な動画処理が可能。 - 高精度なフィルター: 多くのフィルターが提供されており、画質補正、ノイズ除去、フレームレート変換など、様々な用途に対応。 - 高速性: メモリ上で直接処理を行うため、非常に高速なプレビューやエンコードが可能。 - 拡張性: ユーザーが独自のフィルターやプラグインを開発して追加できる。

なぜLinuxでビルドするのか

Avisynthplusは主にWindows環境で利用されることが想定されており、公式にはWindows用のバイナリが提供されています。しかし、以下のような理由からLinux環境での利用が求められる場合があります。

  1. サーバー環境での自動化: 大量の動画ファイルを自動的に処理するサーバー環境では、Linuxが選択されることが多く、Avisynthplusのスクリプト処理能力を活かしたい場合。
  2. 特定のツール連携: Linuxベースの動画エンコーダーや分析ツールとAvisynthplusを連携させたい場合。
  3. Windows環境がない場合: 開発環境や本番環境がLinuxに限定されている場合。
  4. 最新機能やバグ修正の利用: 公式リリース版よりも新しい開発版の機能やバグ修正をいち早く利用したい場合、ソースコードからビルドする必要があります。

Linux環境でAvisynthplusをビルドすることは、これらの課題を解決し、より柔軟な動画処理ワークフローを構築するための重要なステップとなります。

AvisynthplusをLinuxでビルドする詳細手順

AvisynthplusをLinux環境でビルドするには、いくつかの依存ライブラリをインストールし、ソースコードを取得してCMakeとMakeを使ってコンパイル・インストールを行います。ここでは、Ubuntu/Debian系のディストリビューションを例に手順を説明します。他のディストリビューションでも、パッケージマネージャーのコマンドを適宜読み替えれば同様の手順で進められます。

ステップ1:開発環境の準備と依存関係のインストール

まずは、ビルドに必要な基本的なツールと、Avisynthplusが依存するライブラリをインストールします。

Bash
# パッケージリストの更新 sudo apt update # 必須のビルドツール (git, cmake, build-essential: gcc/g++などが含まれる) sudo apt install -y git cmake build-essential # Avisynthplusが依存するライブラリ # libfftw3-dev: 高速フーリエ変換ライブラリ # libavformat-dev, libswscale-dev, libavutil-dev, libavcodec-dev: FFmpeg開発用ライブラリ # libboost-dev: Boost C++ライブラリ # zlib1g-dev: Zlib圧縮ライブラリ # libminizip-dev: Minizip (zipファイル操作) ライブラリ sudo apt install -y libfftw3-dev libavformat-dev libswscale-dev libavutil-dev libavcodec-dev libboost-dev zlib1g-dev libminizip-dev

Fedora/CentOS系の場合 (dnf/yum)

Bash
sudo dnf install -y git cmake make gcc-c++ sudo dnf install -y fftw-devel ffmpeg-devel boost-devel zlib-devel minizip-devel

ステップ2:Avisynthplusソースコードの取得

GitHubからAvisynthplusのソースコードをクローンします。

Bash
# 作業ディレクトリに移動 (例: ホームディレクトリ) cd ~ # Avisynthplusのリポジトリをクローン git clone https://github.com/AviSynth/AviSynthPlus.git # クローンしたディレクトリに移動 cd AviSynthPlus # サブモジュールを初期化・更新 # Avisynthplusは内部で他のリポジトリをサブモジュールとして利用しているため、これが必要 git submodule update --init --recursive

ステップ3:ビルドディレクトリの作成とCMakeの設定

ソースコードのあるディレクトリとは別に、ビルド用のディレクトリを作成し、CMakeを使ってビルド設定を行います。これにより、ソースコードディレクトリがクリーンに保たれます。

Bash
# ビルドディレクトリを作成し、移動 mkdir build cd build # CMakeを実行してビルドファイルを生成 # "..": 親ディレクトリ (AviSynthPlus) にあるCMakeLists.txtを参照する cmake ..

cmake .. コマンドは、現在のシステム環境と依存ライブラリの状況を検出して、Makefileなどのビルドに必要なファイルを生成します。特定のオプションが必要な場合は、ここで追加できます。 例えば、マルチスレッドビルドを有効にするには、次のようにします。

Bash
cmake -D_BUILD_MT=ON ..

ステップ4:コンパイルとインストール

CMakeでビルドファイルが生成されたら、makeコマンドでコンパイルし、make installでシステムにインストールします。

Bash
# コンパイルを実行 # -j$(nproc) オプションは、CPUのコア数に応じて並列ビルドを行うことで、ビルド時間を短縮します。 make -j$(nproc) # システムにインストール (root権限が必要) # デフォルトでは /usr/local/lib/avisynthplus/ にインストールされます sudo make install

インストールが完了したら、Avisynthplusのライブラリやツールが正しく配置されたか確認できます。

Bash
# インストールされたライブラリの確認 (例) ls -l /usr/local/lib/avisynthplus/

ハマった点やエラー解決

Avisynthplusのビルドでは、特に依存ライブラリの不足やCMakeの設定ミスが原因でエラーが発生しやすいです。

1. 依存ライブラリの不足によるCMakeエラー

症状: cmake ..を実行した際に、以下のようなメッセージと共にエラーが出る。

-- Could NOT find Boost (missing: ...
-- Could NOT find FFMPEG (missing: ...
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)

または、make実行時に「fatal error: some_library.h: No such file or directory」といったエラー。

原因: ビルドに必要な開発用ライブラリ (-dev-devel サフィックスのパッケージ) がインストールされていないため、CMakeがそれらを見つけられない。

解決策: エラーメッセージに表示されている不足しているライブラリに対応する開発用パッケージをインストールします。上記「ステップ1」で示したコマンドを再確認し、不足しているものがあれば追加でインストールしてください。特に、FFmpeg関連は複数のlibav...-devパッケージが必要です。

2. CMakeキャッシュの古い情報によるエラー

症状: 一度ビルドを試みたが失敗し、依存ライブラリを追加してから再度cmake ..を実行しても同じエラーが出続ける、または奇妙な設定ミスが解決しない。

原因: CMakeは前回の実行時の設定や検出結果をCMakeCache.txtというファイルに保存します。このキャッシュが古い情報を持っているために、新しい設定やインストールされたライブラリを正しく認識しないことがあります。

解決策: ビルドディレクトリ (~/AviSynthPlus/build) 内にあるCMakeCache.txtおよびCMakeFilesディレクトリを削除してから、再度cmake ..を実行します。

Bash
cd ~/AviSynthPlus/build rm -rf CMakeCache.txt CMakeFiles/ cmake ..

3. Minizip関連のビルドエラー (特にUbuntu 22.04以降)

症状: make実行時に、Minizip関連のファイルでコンパイルエラーが発生する。例: error: 'zipOpen' was not declared in this scope

原因: Ubuntu 22.04 LTS以降では、システムのlibminizip-devパッケージが提供するminizipライブラリのバージョンが古く、Avisynthplusが期待するAPIと互換性がない場合があります。

解決策: この問題は、Avisynthplusのソースコード内でMinizipのビルドを無効にするか、新しいバージョンのMinizipを別途ビルドしてリンクすることで回避できます。最も簡単なのは、CMakeのオプションでMinizipの外部利用をオフにすることです。

Bash
# build ディレクトリで rm -rf CMakeCache.txt CMakeFiles/ # キャッシュをクリア cmake -D_BUILD_MT=ON -DMINIZIP_EXTERNAL=OFF .. make -j$(nproc) sudo make install

-DMINIZIP_EXTERNAL=OFFオプションは、Avisynthplusに同梱されているMinizipを使用するように指示します。

4. libav (FFmpeg) のバージョン競合

症状: make中にFFmpeg関連の関数で未定義参照エラー (undefined reference to 'av_...') が発生する。

原因: システムにインストールされているFFmpegの開発用ライブラリのバージョンが、Avisynthplusが期待するバージョンと異なる場合に発生することがあります。

解決策: この問題は複雑ですが、一般的な解決策としては以下のいずれかを試します。 - システムのFFmpegを最新バージョンに更新する。 - Avisynthplusのビルド時に、特定のFFmpegバージョンへのパスをCMakeオプションで指定する(ただし、これはFFmpegをソースからビルドしている場合に限られることが多い)。 - AvisynthplusのGitHubリポジトリのIssueやWikiで、特定のFFmpegバージョンに関する情報がないか確認する。

通常は、最新の安定版FFmpeg開発ライブラリをインストールしていれば問題なくビルドできるはずです。

まとめ

本記事では、AvisynthplusをLinux環境でソースコードからビルドする詳細な手順 を解説しました。

  • 必要な依存関係のインストール: git, cmake, build-essentialに加え、libfftw3-dev, libavformat-dev, libboost-dev, zlib1g-dev, libminizip-devなどの開発用ライブラリを導入しました。
  • ソースコードの取得と準備: GitHubからAvisynthplusリポジトリをクローンし、サブモジュールを初期化しました。
  • ビルドとインストール: mkdir buildでビルドディレクトリを作成し、cmake ..で設定、make -j$(nproc)でコンパイル、sudo make installでシステムにインストールを行いました。

この記事を通して、Linux環境でAvisynthplusを利用するための基盤を構築できるようになり、動画処理の自動化やカスタムワークフローの構築に役立つことでしょう。今後は、ビルドしたAvisynthplusを用いて実際の動画処理スクリプトを実行する方法や、Dockerなどのコンテナ技術を使ってAvisynthplusの実行環境を構築する方法についても記事にする予定です。

参考資料