Euquid Blog.

WEBエンジニアの技術ブログ。主に個人開発で学んだことの備忘録です。

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

Cover Image for 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

参考