概要
FFmpegとPythonがインストールされていれば、SendTo
ディレクトリにスクリプトファイルを1つ配置するだけで、エクスプローラーの「送る」に「FFmpegで結合」メニューを作れます。
万一プログラムの不具合で大事なファイルを失ってしまっても責任はおえません。すいません。
実行環境
今回稼働確認を取った環境です。厳密にこのバージョンでなくてもある程度動くと思います。メモ程度に。
- Windows 11 Home
- Python 3.10.1
- FFmpeg 4.4.1
前提条件
- Pythonがインストールされていること
- コマンドプロンプトで
python
と打つとPythonが起動すること
- コマンドプロンプトで
- FFmpegがインストールされていること
- コマンドプロンプトで
ffmpeg
と打つとFFmpegが起動すること
- コマンドプロンプトで
導入手順
以下のファイルを配置してください。
- ファイル
- 配置先
-
%AppData%\Microsoft\Windows\SendTo
※↑の文字列をそのままエクスプローラーのアドレスバーにコピペでディレクトリに飛べます
-
以上。
使い方
右クリックしてください。「送る」の中に「FFmpegで結合」メニューが表示されます。
「FFmpegで結合」をクリックすると、連結順、出力ファイル名を確認されます。
yes
またはy
と入力してエンターキーを押すと選択したファイルがFFmpegで結合されます。
事故防止のため、_
から始まるディレクトリに元の動画ファイルを退避させています。
注意
-
連結はファイルの名前順に行います
- ただし「neko.mp4」「neko (2).mp4」のように末尾が「半角スペース(数字).拡張子」となっているファイルについては、数字なしのファイルを0として扱います。
- 単純に名前順にすると「neko(2).mp4」→「neko.mp4」の順でになってしまいますが、このパターンだけは特別に「neko.mp4」→「neko (2).mp4」の順で連結します。
- ただし「neko.mp4」「neko (2).mp4」のように末尾が「半角スペース(数字).拡張子」となっているファイルについては、数字なしのファイルを0として扱います。
-
連結後のファイルは連結の最初のファイルの名前になります
-
同じカメラ、同じ設定で撮影した時に出力される動画を連結する意図で作っています
- →縦横サイズとかフレームレートが異なるファイルに使った時何が起きるかは試していません
- もちろん動画ファイル以外の組み合わせも試してません
-
字幕ファイルとかも試してません
-
改めてですが、万一大事なファイルを失ってしまっても責任はおえません
補足
プログラミング的な補足をしておきます。
.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を実行しているだけです。