m2tsをmp4にエンコードするシェルスクリプトをcronで実行する

以前、ffmpeg で m2ts から mp4(H.265)にエンコードするコマンドを作成した。 https://blog.euquid.com/m2ts-mp4
今回はこれをシェルスクリプト化し、cron で定期実行させる。
シェルスクリプトの作成
chinatsu で録画した m2ts ファイルの保存フォルダに、下記の mp4encode.sh
を格納する。
#!/bin/bash
# 出力先フォルダ
out=$(cd $(dirname $0); pwd)"/out/"
# m2tsファイルがある場合のみ実行する
if ls *.m2ts > /dev/null 2>&1; then
for name in *.m2ts; do
# mp4ファイルが無い場合のみ実行する
if [ ! -e ${out}${name%.*}.mp4 ]; then
# m2ts -> mp4 変換し、出力先に保存
ffmpeg -fflags +discardcorrupt -i ${name%.*}.m2ts -c:a copy -bsf:a aac_adtstoasc -c:v libx265 -crf 22 -tag:v hvc1 ${out}${name%.*}.mp4
# 変換後にm2tsファイルを削除
sudo rm ${name%.*}.m2ts
fi
done
fi
mp4 の出力先フォルダを作成しておく。
cd /[m2tsの保存フォルダ]/
mkdir out
crontab の編集
// cronの設定内容の確認
$ crontab -l
// cronの登録/編集
$ crontab -e
末尾に下記を追記する。
ここでは、2 時間ごとに 30 分に mp4encode.sh
を実行する設定とした。
# m h dom mon dow command
30 */02 * * * /mnt/hdd1/recoder/mp4encode.sh