そういう、モデルなんです。

ビジネスモデル、設計図、模型などの現状と動向を考察、関連書籍の紹介

Power Automate Desktop (PAD) で ffmpeg での動画ファイル変換の手作業を自動化した

これまで手作業で行っていた動画ファイル変換の作業を、Power Automate Desktop (PAD) で自動化した。

PAD についてはダウンロード方法以外は何も知らないとこから開始して、2時間くらいで完成した。

仕様

利用者がコマンドプロンプトから ffmpeg で以下のコマンドを入力して mp4 形式の動画ファイルを変換する作業を、マウスボタンで1クリックで行えるようにした。

 ffmpeg -i "変換前の動画ファイル名.mp4" -r 10 -s 1280x720 "変換前の動画ファイル名-out.mp4"

変換前の動画ファイル名の部分には、変換したいファイル名が入る。

自動化する前に行っていた手作業のユースケースは、以下のとおり。

tombi-aburage.hatenablog.jp

tombi-aburage.hatenablog.jp

事前条件

  • 変換したい動画ファイル群は、特定のフォルダにまとめて置いてあるものとする。
    理由:このフォルダを固定値で作業フォルダーに指定しているため
  • そのフォルダで、手作業で ffmpeg による変換は成功する
    理由:自動化以前の問題は片が付いている方がハマらないため 

PADでのフロー実装

フロー全体で16ステップとなった。デバッグ用の行を除けば10ステップ。

f:id:tombi-aburage:20220129162725p:plain

f:id:tombi-aburage:20220123182632p:plain

 

1: ファイルの選択ダイアログを表示

初期フォルダーとして、変換したい動画ファイル群を固定値で指定して、ファイルフィルターは *.mp4 に指定した。

選択したファイルのフルパスが SelectedFile という名前の自動的に作成された変数に格納される。

2, 3 ,14~16: ファイルが指定された場合には ffmpeg 処理を行う

ファイルの選択ダイアログには、開く、キャンセルの2つのボタンがある。

そのどちらが押されたかが ButtonPressed という名前の自動的に作成された変数に入るので、2行目でチェックしている。

f:id:tombi-aburage:20220123184053p:plain

PADでは、変数名の前後には % を付加することになっているらしい。ちょっとはまった。

ファイルの選択ダイアログがそのまま閉じられた場合には、15行目に飛んで終了。

4~6: ffmpeg のコマンド引数に指定するファイル名の文字列を作る

4行目でフルパスから、拡張子を除いたファイル名の部分を取り出して、FileNameNoExtension という名前の自動的に作成された変数に入れてもらっている。

その後、

  • SourceFileName は、ffmpeg の引数の "変換前の動画ファイル名.mp4" のうち、変換前の動画ファイル名の部分に相当
  • DestinationFileName も同じ値を入れている
    当初は、-out を付加した文字列を入れるつもりだったが、9行目で直接、文字列を付加できることに気づいたため、ただのゴミ変数となった。消すのも面倒なので放置している。

当初、変数の代入の指定を逆にしてしまい、値が設定されず少しハマった。7行目はそのときのデバッグ用の残骸。エディタ(開発)画面右側に変数の値が表示されるので、実装に組み込む必要はなかったのだが、それには後で気づいた。

なぜ逆にしてしまったかというと、「変数の設定」の画面で、宛先という表現が使われていたからだ。英語では To となっていたので、上段の変数(設定と表現されている)の変更後の値はコレにします、という意味である。

f:id:tombi-aburage:20220123185016p:plain

8~13: コマンドプロンプトffmpeg を起動する

  • 9行目で、ffmpeg -i "%SourceFileName%.mp4" -r 10 -s 1280x720 "%DestinationFileName%-out.mp4" と指定して ffpmeg を実行している

10~12行目は、当初 ffmpeg が正しく起動されなかったので、出力を確認するために付け加えたデバッグ用コード。

無事に変換できた

ファイルサイズが大きかったので、3分くらいかかったが、動画は正しく変換された。