日毎の動画ファイルを結合して、当月分の動画ファイルを作成するスクリプト
月末が近づいてきたので、この問題を解決するスクリプトを作成した。
これにより、月初に先月分の画像ファイルを処理するのではなく、日毎の動画ファイルから先月動画ファイルが生成される。
もちろん、日毎に前日の動画ファイルが作成されていることが前提である。これを実現するスクリプトは随分前から稼働させているので問題ないと思う。
cronに登録する際の注意点として、月末日の日毎の動画ファイルが作成されてから、下記のスクリプトを実行させる必要がある。
これ、ChatGPTに添削してもらった。
<追記>
ChatGPTが修正したところは、|| exit 1と文字列を変数に代入して用いるようにしてくれた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#!/bin/bash # ベースディレクトリ base_dir="/home/kimi/Pictures/rasp_zero_zeta" # カレントディレクトリを指定のディレクトリに変更 cd "$base_dir" || exit 1 # 先月の年と年月を取得 last_month=$(date -d 'last month' '+%Y-%m') Year=$(date -d "$last_month-01" '+%Y') YM=$(date -d "$last_month-01" '+%Y%m') # カレントディレクトリを先月の年に変更 cd "$Year" || exit 1 # Trashフォルダが存在しない場合は作成 trash_folder="Trash" if [ ! -d "$trash_folder" ]; then mkdir "$trash_folder" fi # 日毎の動画のリストを作成 video_list="video_list.txt" ls "$YM*.mp4" | awk '{printf "file %s\n", $0}' > "$video_list" # 画像を動画に変換 output_file="${YM}_zero_zeta.mp4" ffmpeg -f concat -i "$video_list" -c copy "$output_file" # 日毎の動画を削除用フォルダに移動 mv "$YM*.mp4" "./$trash_folder" # テンポラリファイルを削除 rm "$video_list" |