【Mac自動化】Pixelmator ProのAI超解像を「完全放置」で動画に適用する最強スクリプト(AppleScript × ショートカット連携)

目次

スポンサーリンク

前回記事の問題点

0. 若干の手間がかかっていた

動画生成においてはできるだけ手間をかけたくないので、前回記事でのコマンドライン入力や動画をフレームに分割するワークフォルダの作成や削除等は全部自動でやってもらいたいものです。
そこで今回の記事では、アップスケールしたい動画ファイルを選択すればあとは放置するだけでアップスケールしたファイルが出来上がる仕組みを構築していきましょう。Apple Scriptのそのまま乗せているのでショートカットの作成だけで実行できるはずです。

1. 導入:手作業の限界を突破する

  • 悩み: ショートカットアプリだけだと、動画をバラバラにしたり、最後に結合したりするのが面倒。
  • 解決策: AppleScriptで「FFmpeg」と「ショートカット」を繋ぎ、動画を選択するだけで高画質化が完了する「全自動ライン」を構築します。
  • 最大のメリット: 処理中にPixelmator Proの画面が立ち上がらず、裏で静かに動くので、作業を邪魔されません。

2. 事前準備

調査系タスクのルールに基づき、必要なツールをまとめます。

ツール役割入手方法
Pixelmator ProAI(ML Super Resolution)による高画質化Mac App Store
FFmpeg動画の分解(画像化)と再結合Homebrew等でインストール
ショートカットPixelmatorの機能を「裏」で実行するエンジンMac標準アプリ

3. ステップ1:専用ショートカットの作成

  • ポイント: 「クイックアクション」の設定をオンにして、外部からの入力を受け取れるようにすること。
  • 設定: 保存先を特定のフォルダ(tmp_outframes)に固定し、「保存先を尋ねる」をオフにするのがフルオートの秘訣です。

リサイズ設定のコツ 
ResizeのSizeの部分で、今回は縦型動画(9:16)を想定して「1080×1920」などに設定しています。
もし横型4Kにしたい場合は「3840 × Auto Height」などに書き換えてください。

4. ステップ2:魔法のAppleScript

スクリプトを掲載します。コピペして使ってみてください。

-- 1. 動画ファイルの選択
set sourceVideo to (choose file with prompt "アップスケールしたい動画を選択してください")
set posixSource to POSIX path of sourceVideo

-- 2. 作業用フォルダのパス設定
set desktopPath to POSIX path of (path to desktop)
set workFolder to desktopPath & "Upscale_Work/"
set inFolder to workFolder & "tmp_frames/"
set outFolder to workFolder & "tmp_outframes/"

-- 3. フォルダの実作成とクリーンアップ
do shell script "mkdir -p " & quoted form of inFolder
do shell script "mkdir -p " & quoted form of outFolder
do shell script "rm -f " & quoted form of inFolder & "*.png"
do shell script "rm -f " & quoted form of outFolder & "*.png"

-- 4. FFmpegで動画を静止画(連番PNG)に分解
set ffmpegPath to "/opt/homebrew/bin/ffmpeg"
do shell script ffmpegPath & " -i " & quoted form of posixSource & " -qscale:v 1 -qmin 1 -qmax 1 -vsync 0 " & quoted form of (inFolder & "frame%08d.png")

-- 5. UNIXコマンドでファイルリストを取得
set pathList to paragraphs of (do shell script "find " & quoted form of inFolder & " -type f -name '*.png' | sort")

-- 6. 【修正箇所】パスの変換を先に行い、準備できたものをショートカットに渡す
repeat with aPath in pathList
	if aPath is not "" then
		-- まずMac本体(AppleScript)の機能で、テキストを「ファイル」に変換する
		set macFile to POSIX file aPath as alias
		
		-- 準備できた「本物のファイル」をショートカットに処理させる
		tell application "Shortcuts Events"
			run shortcut "自動アップスケール(入力用)" with input macFile
		end tell
	end if
end repeat

-- 7. FFmpegで画像を動画に再結合(1080p縦型へ最適化)
set outputVideo to workFolder & "Final_Upscale_1080p.mp4"
do shell script ffmpegPath & " -framerate 24 -i " & quoted form of (outFolder & "frame%08d.png") & " -vf scale=1080:1920 -c:v libx264 -pix_fmt yuv420p -crf 18 " & quoted form of outputVideo

-- 8. 完了通知
display dialog "フルオート処理が完了しました!\n最高画質の動画を確認してください。" & return & return & "保存先: " & workFolder buttons {"フォルダを開く", "閉じる"} default button "フォルダを開く"

if button returned of result is "フォルダを開く" then
	do shell script "open " & quoted form of workFolder
end if

ここでは、処理のオーバーヘッドは多少かかりますが、一枚づつ処理しています。
動画ファイルをフレームごとに分割すると、枚数が多くなりがちですがAI動画の場合は数秒単位ですので
処理のオーバーヘッドは無視し、それよりも一括で処理するとマックのセキュリティの仕組み上「こんなに大量のファイルを勝手に保存するのは危険だ!最後に必ず人間に『ここにまとめて保存していいですか?』と確認ダイアログを出そう」と判断し最終ファイル出力時にユーザーに対話型での指示を求めてくるのでそれをスキップさせるために一枚づつ処理させています。

5. トラブルシューティング

いわゆるバグに対しては、スクリプトのエラーをスクショしてAIに聞くのが一番はやいです。
スクリプトをテストしている時にエラーが表示されたら、そのスクショを撮ってAIに『これ解決して』と聞いてみましょう。基本はエラーを理解して自分で解決するのがいいのですが他人のスクリプトを理解するのは手間ですからね・・・

AI動画アップスケール自動化スクリプト(ハイブリッド版)仕様書

さてここでは、先ほどのスクリプトの解説をしています。AppleScriptは歴史のあるスクリプトだけに他のスクリプト言語とは若干のくせがありますので、必要な方はご一読いただき、どのフォルダに何が出力されて最終的な動画ファイルはどこに生成されるのか理解できます。

1. 概要

本スクリプトは、FFmpegの「高速な動画処理」と、Pixelmator Pro(ショートカットアプリ経由)の「高品質なAI超解像(ML Super Resolution)」を組み合わせた全自動アップスケールツールです。 ユーザーは動画ファイルを選択するだけで、裏で全フレームの高画質化が行われ、最終的に縦型(9:16)の高画質動画として書き出されます。

2. システム要件・前提条件

  • OS: macOS(ショートカットアプリが動作するバージョン)
  • 必須ツール:
    • FFmpeg(Homebrew等で /opt/homebrew/bin/ffmpeg にインストール済みのこと)
    • Pixelmator Pro
  • 必須ショートカット:
    • 名称:自動アップスケール(入力用)
    • 設定:「クイックアクションから画像・ファイルの入力を受け取る」設定にし、Pixelmator ProのResize機能(ML Super Resolution)を実行後、tmp_outframes フォルダへ確認なしで直接保存するよう構成されていること。

3. ディレクトリ構成

スクリプト実行時、デスクトップに以下の作業用フォルダが自動生成されます。

Plaintext

デスクトップ
 └── Upscale_Work/ (メイン作業フォルダ)
      ├── tmp_frames/ (動画から切り出した元の連番画像が入る部屋)
      ├── tmp_outframes/ (AIで高画質化された完成画像が入る部屋)
      └── Final_Upscale_1080p.mp4 (最終的に書き出される完成動画)

4. 処理フロー(全6工程)

  1. 対象ファイルの選択
    • ユーザーにダイアログを表示し、処理したい元動画(.mp4や.movなど)を選択させます。
  2. 環境初期化(安全対策)
    • デスクトップに Upscale_Work と、その中に2つの作業用サブフォルダを作成します。
    • 【重要】 過去のデータが混ざる事故を防ぐため、実行時にフォルダ内の古いPNG画像をすべて自動削除(クリーンアップ)します。
  3. フレーム分解(FFmpeg)
    • 元動画を最高画質(無劣化設定:qscale:v 1)で、1枚ずつの静止画(連番PNG)に分解し、tmp_frames フォルダへ保存します。
  4. AIアップスケール実行(Shortcuts Events)
    • UNIXの find コマンドで分解した全画像のリストを取得します。
    • Mac標準の「Shortcuts Events」機能を使用し、リストアップされた画像を1枚ずつショートカットアプリへ渡します。
    • 【重要】 1枚ずつ渡すことで、macOSのセキュリティによる「大量ファイルの保存確認ダイアログ」を回避し、画面を出さずに完全バックグラウンドでの連続処理を実現しています。
  5. 動画の再結合と最適化(FFmpeg)
    • tmp_outframes に保存された高画質画像を、再び24fpsの動画として結合します。
    • スマホ視聴に最適な「1080×1920(縦型 9:16)」にリサイズし、YouTube ShortsやTikTok向けの高品質なH.264形式(crf 18)で出力します。
  6. 完了通知
    • 全ての処理が終わると完了ダイアログを表示し、OKを押すと完成動画が入ったフォルダを自動で開きます。

まとめ

「自動化は、最初のエラーとの戦いが一番大変ですが、一度動けば最高の相棒になります」何度でも使い回しができる点がいいです。画像生成していると待ち時間ができるのでそのあいだにちまちま処理をかけるといいと思っています。

📊 アップスケール製品・サービスのベンチマーク

動画高画質化ツールのベンチマーク比較表です。ご参考までに

サービス名処理方式自動化のしやすさコスパ
Pixelmator ProローカルAI非常に高い(今回の方法)買い切りで最高
Topaz Video AI専用ソフト高い(CLI対応)高価
VanceAIクラウド型低い従量課金
CapCutアプリ内機能低い(手動のみ)無料〜

スポンサーリンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

システム開発SE・アプリ開発・デバッガー等々なんでもやる猫の下僕です。現在は凶暴猫にカタカタ動く手を狙われながらキーボードを打っています。かなりゆるい性格なのでコメントやメッセージお気軽に〜お仕事のご依頼もお気軽にぃ〜

スポンサーリンク

コメント

コメントする

CAPTCHA


目次