0
1

右クリックの「送る」メニューに「FFmpegで結合」を追加

Posted at

概要

FFmpegとPythonがインストールされていれば、SendToディレクトリにスクリプトファイルを1つ配置するだけで、エクスプローラーの「送る」に「FFmpegで結合」メニューを作れます。

image.png

万一プログラムの不具合で大事なファイルを失ってしまっても責任はおえません。すいません。

実行環境

今回稼働確認を取った環境です。厳密にこのバージョンでなくてもある程度動くと思います。メモ程度に。

  • Windows 11 Home
  • Python 3.10.1
  • FFmpeg 4.4.1

前提条件

  • Pythonがインストールされていること
    • コマンドプロンプトでpythonと打つとPythonが起動すること
  • FFmpegがインストールされていること
    • コマンドプロンプトでffmpegと打つとFFmpegが起動すること

導入手順

以下のファイルを配置してください。

以上。

使い方

動画ファイルを複数個選択してください
ファイル選択.png

右クリックしてください。「送る」の中に「FFmpegで結合」メニューが表示されます。
コンテキストメニュー.png

「FFmpegで結合」をクリックすると、連結順、出力ファイル名を確認されます。
cmd.png

yesまたはyと入力してエンターキーを押すと選択したファイルがFFmpegで結合されます。
cmd2.png

file2.png

事故防止のため、_から始まるディレクトリに元の動画ファイルを退避させています。

注意

  • 連結はファイルの名前順に行います

    • ただし「neko.mp4」「neko (2).mp4」のように末尾が「半角スペース(数字).拡張子」となっているファイルについては、数字なしのファイルを0として扱います。
      • 単純に名前順にすると「neko(2).mp4」→「neko.mp4」の順でになってしまいますが、このパターンだけは特別に「neko.mp4」→「neko (2).mp4」の順で連結します。
  • 連結後のファイルは連結の最初のファイルの名前になります

  • 同じカメラ、同じ設定で撮影した時に出力される動画を連結する意図で作っています

    • →縦横サイズとかフレームレートが異なるファイルに使った時何が起きるかは試していません
    • もちろん動画ファイル以外の組み合わせも試してません
  • 字幕ファイルとかも試してません

  • 改めてですが、万一大事なファイルを失ってしまっても責任はおえません

補足

プログラミング的な補足をしておきます。

.batファイルにPythonスクリプトを書く

FFmpegで結合.batはコマンドプロンプトのバッチファイルですが、1行目にこうかかれています。

@python -x "%~f0" %* & exit /b %errorlevel%

これはちょっとしたテクニックで、1行目を読み飛ばすようにPythonのインタープリタに指示することで、バッチファイルなのにPythonスクリプトがかけるようになります。

【参考】
Windowsでshebangもどき、またはバッチにスクリプトを埋め込む方法
https://qiita.com/snipsnipsnip/items/50e4ca88e3ce3f8cffda

「送る」メニューに表示される「SnedTo」ディレクトリ

Windows11では%AppData%\Microsoft\Windows\SendToにスクリプトファイルや実行ファイル(またはそのショートカット)を配置すると、「送る」メニューに表示されます。

スクリプトでは選択されたファイルのパスを実行時引数として受け取ることができます。

input_path_list = sys.argv[1:]  # 2番目以降の引数にファイルパスが渡る

プログラムの内容

これといって特筆することはないです。
FFmpegに渡すリストファイルを作って、ファイル退避して、FFmpegを実行しているだけです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1