目的
前回記事「Pythonとffmpegで動画の無音部分をカットする」により、たくさん動画を作ったので、shotcutのタイムラインに追加する処理を作ってみた。
背景
前々回記事「shotcutで動画作ってyoutube投稿してみた」、前回記事に引き続き、shotcutのmltファイルを直接加工して、動画を追加するpythonコードを作ってみた。
環境
- Windows10 バージョン21H1(OSビルド19043.1348)
- Python3.9.1
- Shotcut 21.10.31
セットアップ
以下の記事のセットアップを参照のこと。
前回記事「Pythonとffmpegで動画の無音部分をカットする」
前々回記事「shotcutで動画作ってyoutube投稿してみた」
使い方
GitHubからSource code(zip)をダウンロードして、展開する。
展開したパスを「c:\Git\traning\」として、加工前の動画ファイルが「c:\Git\traning\python\Movie\test.mov」なら以下のコマンドを実行する。
cd c:\Git\traning\python\Movie
python movieCutter.py c:\Git\traning\python\Movie\test.mov
すると、「*_part*.mov」な分割ファイルが生成されるので、以下のようなスクリプトを書いて実行すると、プレイリストに分割ファイルが追加され、test1.mltに保存される。
from shotcutHelper import *
# カレントフォルダ以下で「*_part*.mov」を再起検索して、
# 見つけたファイルをトラックmail_binに追加して、保存する
app = ShotcutHelper('./せんちゃんネル/テンプレート.mlt')
movies = glob.glob('./**/*_part*.mov', recursive=True)
app.add_movies('main_bin', movies)
app.save_xml('./せんちゃんネル/test1.mlt')
(プレイリストのIDは'main_bin'である)
↓ 追加された
また、以下のようなスクリプトを書いて実行すると、タイムラインに分割ファイルが追加され、test2.mltに保存される。
from shotcutHelper import *
# カレントフォルダ以下で「*_part*.mov」を再起検索して、
# 見つけたファイルをトラックplaylist0に追加して、保存する
app = ShotcutHelper('./せんちゃんネル/テンプレート.mlt')
movies = glob.glob('./**/*_part*.mov', recursive=True)
app.add_movies('playlist0', movies)
app.save_xml('./せんちゃんネル/test2.mlt')
(ただし、存在する動画トラックのIDが'playlist0'とする)
shotcutのタイムラインのV1のIDは、
mltファイルを直接開くと、以下の赤線の様にID="playlist0"であることが確認できる
↓ タイムラインに追加された(二つ目のCloudsは、隙間がないように前詰めされたようだ)
おわりに
やっていることは、ただのxml編集なので、難しいところはなかった。
トラックの追加とテロップの追加もそのうち挑戦してみたい。
関連リンク
参考サイト
Pythonの順序付き辞書OrderedDictの使い方
Python 日付フォーマット チートシート