広告

FFmpeg を利用し、「AVI」を連結し「MP4」に変換する支援ソフト作ってみた。

C++Builder

ばあちゃん宅の庭に何か来てそう・・・だと言うことで、電池式でmicroSDに録画するカメラと猫餌を仕掛けてみました。
動体検知なので、映像に動きがあった時だけ録画します。
AVI形式なのと、かなり、無駄なファイルも多いので、写っている動画だけ残したいのですが、その動画ファイル「AVI」を「MP4」に変更し一つに結合するのにどうしようか?
最初は、Windows11標準の「Micosoft Clipchamp」でやってみました。
ところが、短い映像ファイルが、多数がある上に、一旦クラウドにアップして処理するようでかなり時間がかかります。

FFmpegの利用

何か、いい方法ないか・・・、そうだ!
以前Linuxにインストールした、「FFmpeg」を思い出しました。

この記事で紹介している、「動画リストファイル」を作成すると、連結してくれます。
ところが、今回は動画ファイルが多いので、リストファイルを手作業で作るのは面倒です。
シェルでどうにかする方法も可能ですが、Linuxマシンへの転送も面倒なので、今回は、Windows環境で作業しようと思います。

FFmpegのWindowsへのインストール方法は、ネット上にたくさん公開されていますが、基本的には実行ファイルをダウンロード・展開して利用する方法です。
標準では一般的なインストーラではないので任意のフォルダへ保存するだけで動きますが、プログラムへのパスも通っていません。
実行にはフルパスで指示するか、環境変数でパスを通す必要があります。
操作は基本的に、CUIでの作業になります。
今回のやりたい作業は撮れてた動画はTVで見たいので、「AVI」を「MP4」に連結したいです。
動画連結は、頻繁にやると思うので、連結するファイルリストとFFmpeg用のコマンドを生成するだけの仕様ですが、ソフト作りました。

FFmpeg、ダウンロード

ダウンロードはこちらからできますが、下記2つの選択があります。
・Windows builds from gyan.dev
・Windows builds by BtbN
どっちが、いいんだろう?
こちらに説明がありましたので、参考にさせていただきましたが、
私は、「Windows builds from gyan.dev」の「release builds」「ffmpeg-release-full.7z」をダウンロードしました。
「.7z」で圧縮されていますが、筆者のWindows11の環境では、エクスプローラ上でクリックすると、圧縮されているフォルダが表示されるので、適当なフォルダへドラッグ&ドロップでコピーしました。

連結支援アプリ、FFmpegVideoMerger.exe 開発

FFmpegを利用して動画の連結させるだけのWindowsアプリです。
もちろん、FFmpeg だけでもコマンドをたたけば、連結は可能ですが、環境整えたり、ファイルリストを作成するのも面倒だったので、ソフト化しました。
通常は、下記の操作が必要です。

  • 環境変数を編集し、パスを通す
  • 連結する、ファイルリストをテキストファイルで作成する
  • FFmpeg のコマンドで、連結を実行する

書き出してみれば、大した作業ではないですが、ファイルリストを作るのも、結構面倒です
アプリの仕様としては、連結したい動画ファイルを任意ファルダへコピーしておいて、そのフォルダをアプリ上へドロップする事で、ファイルリストを作成します。
ファイルリストの順序も変更可能にしました。
FFmpeg のパスも、コピーした実行ファイル「FFmpeg.exe」が保存されているフォルダをドロップする事で、環境変数の設定なしでも、動作できるようにしました。

FFmpegVideoMerger.exe 使い方

ダウンロード、インストール

  • こちらから、ダウンロード
  • ダウンロードした圧縮ファイルを、適当なフォルダへ解凍
  • 解凍されたフォルダ内の、「Readme.txt」を読んでいただけると幸いです。
  • 連結したい動画類をコピーした、フォルダを準備します。
  • 対応拡張子
    FFmpeg はかなりのファイル形式に対応しているみたいですが、このアプリでは下記の拡張子を動画ファイルと判断し、リストを作成します。
    ” TS, MP4, MOV, MKV, AVI, FLV “
    ただし、筆者の環境では、「AVI、MP4」の結合しか確認していませんので、ご了承ください。
  • フォルダ内の、「FFmpegVideoMerger.exe」で起動できます。

使用方法

簡単に説明すると、

  • 「動画フォルダをドロップ」
  • 「FFmpegフォルダをドロップ」
  • 「ビデオファイルボタンクリック」
  • 「FFmpeg実行ボタンクリック」

の手順です。
下記で、もう少し詳しく説明します。

  • 動画が登録された、フォルダをのパネルへドロップします
  • 登録されている動画ファイルの一覧が、のエディタ領域へリスト化されます
  • 一般的な、エディタ的な操作になります。
    追加、削除、順序変更などが可能です。
  • は、結合された、ファイル名です。
    ファイル名は変更可能ですが、現バージョンでは、「MP4」を想定しています。
  • に、「ffmpeg.exe」のファイルか、登録されている親フォルダ「bin」をドロップ
  • 私の環境では、無変換で、結合させた動画が、「メディアプレーヤー」でうまく動作しなかったので、「H.264」でエンコードするオプションを追加しました。
    デフォルトでは、チェック状態になっていますが、エンコードは少し時間がかかるので、不要な場合には、チェックを外してください。
  • 設定が正常であれば、「Create a video list file.」のボタンが表示されます。
    クリックすると、動画ファイルフォルダに、ファイルリスト「list.txt」と、実行コマンドファイル「cmd.txt」が作成されます。
  • FFmpeg は、最適化や品質など、多くのパラメータがあるので、「cmd.txt」を手動編集することも可能です。
  • この「cmd.txt」を、手動で一行づつ確認しながら、コマンドプロンプトで実行する事も可能ですが、表示された「Run FFmpeg」をクリックすると、実行用バッチファイルを作成し、自動実行します。
  • 多少の動画ファイルの削除、追加の場合、動画フォルダに追加・削除して、エディタ等で「list.txt」を編集し、「cmd.bat」に名前変更して実行すれば、再結合する事も可能です。

あとがき

ばあちゃん宅に来てたのは、タヌキでしたぁ~
他にも、猫やカラス、イタチみたいの・・・近所に墓地公園があるので、動物には暮らしやすいと思います。

FFmpegは、CUIが基本ですが、かなり多くの機能があります。
今回公開のアプリは、GUI操作でFFmpegの結合オプションをFFmpegに渡すだけの機能ですが、FFmpegのコマンド操作を少しづつ、GUI化で支援機能を追加していけば、簡易的な動画編集アプリに進化していく可能性はありますね。
動画編集は、あまりやらないので、まったく素人ですが、またなにか必要な操作がでてきたら、ソフト化してみたいと思います。


ダウンロード

下記、「自作ソフト」ページから、ダウンロードできます。

コメント

タイトルとURLをコピーしました