pythonとFFMPEGでフォルダ内の複数の動画ファイルの結合(subprocess)

pythonとFFMPEGでフォルダ内の複数の動画ファイルの結合(subprocess) プログラム

以前の記事(YouTube【作業用BGM】の作成pythonで実行コマンド作成)では、以下を行ってきました。

記事名内容
YouTube【作業用BGM】の作成FFMPEGで複数の動画ファイルを1つの動画ファイルに結合
pythonで実行コマンド作成  pythonで選択したフォルダ配下にある動画ファイルに対するコマンドを作成

今回は、これらを組み合わせて選択したフォルダ配下にある複数の動画ファイルを1つの動画ファイルに結合する処理をプログラミングしていきます。

プログラムの用途・目的

ビデオ撮影した複数の動画を一つに纏めるのに利用します。

GUIツールで結合したいファイルを取り込んでから結合する方法もありますが、ツールへの取り込み結合処理の過程の内、ツールへの取り込み省略したい為に作成しました。

ロスジェネ太郎
ロスジェネ太郎

ビデオ撮影した動画は、場面ごとにバラバラのファイルになってしまいます。一方、編集する際には複数の動画を一つの動画にしてしまうことが多いと思います。今回はその作業を自動化しようという試みです。

動作確認済みの環境

  • Windows8
  • python3.8

pythonのソースコード

以下です。

後述する利用モジュールのインポート、FFmpegの導入済みの環境で動作します。

プログラムを実行すると、フォルダ選択ダイアログが表示されます。

また、結合元の動画ファイルの拡張子はmp4またはMTSに固定しています。(修正方法は後述します。)

利用モジュール

tkinter、glob、re、subprocessモジュールを利用しています。

標準ライブラリであるre、subprocessモジュール以外は、次のコマンドでインストールします。

モジュール名説明
re正規表現を扱うモジュールです。
正規表現パターンによる文字列の抽出や置換、分割などができます。
今回は、if re.search(‘.*.(mp4|MTS)’, f):部分で、ファイルの拡張子がmp4、もしくは、MTSであるかどうかを判定しています。
subprocess  Python のプログラムから他のアプリを起動したり、実行結果を得たりするモジュールです。
今回は、CUIツールであるFFmpegを起動しています。

tkinter、globモジュールに関しては、以前の記事をご参照ください。

また、FFMPEGの導入方法については、以下の記事をご参照ください。

ソースコード利用の簡単な説明

次の2つを修正して利用します。

 検索対象の拡張子出力ファイル名

修正内容修正箇所
検索対象の拡張子(※)修正前:if re.search(‘.*.(mp4|MTS)’, f):
修正後:if re.search(‘.*.(mp4|MTS|wmv)’, f):
出力ファイル名修正前:OUT_FILE_NAME=[出力ファイル名]
修正後:OUT_FILE_NAME=’out.mp4

(※)”|” + [検索したい拡張子] の書式で記載します。

おわりに

選択したフォルダ配下にある複数の動画ファイルを1つの動画ファイルに結合する処理をプログラミングしました。

ロスジェネ太郎
ロスジェネ太郎

プログラミングするには、多少の知識と作成の手間がありますが、今後長い間繰り返し行うことを省略化する事が出来れば、長期的には大きな時間短縮になりますね。

このブログでは、引き続きこの様な効率的なプログラム活用事例をテーマに取り扱っていきたいと思います。

退屈なことはPythonにやらせよう ノンプログラマーにもできる自動化処理プログラミング [ Al Sweigart ]

価格:4,070円
(2020/5/31 17:30時点)
感想(3件)

コメント

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