https://handbrake.fr/
HandBrake は動画ファイルの形式を変換するソフトウェアです。HandBrake を使って動画ファイルをコマンドラインでエンコードするスクリプトを書いてみました。
処理の概要
- HandBrake のコマンドラインインタフェース
HandBrakeCLI
を使用します。
- HandBrake の
Universal
というプリセットを使って、M2TS 形式をMP4 に変換します。
- 変換元ディレクトリにあるファイルを変換して、変換先ディレクトリに格納します。
- すでに変換したファイルはスキップします。
- 変換元ディレクトリの中のファイルが最近(10分以内)更新されている場合は処理の開始をスキップします。
HandBrakeCLI のインストール
$ sudo add-apt-repository ppa:stebbins/handbrake-releases $ sudo apt-get update $ sudo apt-get install handbrake-cli
|
変換スクリプト
m2ts2m4v.sh#!/bin/bash
SRCDIR=/PATH/TO/SOURCE_DIRECTORY DSTDIR=/PATH/TO/DESTINATION_DIRECTORY ENC=HandBrakeCLI PRESET="Universal" WAITMIN=10 SRCEXT=m2ts DSTEXT=m4v
if ! [ -d $SRCDIR ] || ! [ -d $DSTDIR ] ; then echo "Bad directory." exit fi
count=`ps -ef | grep $ENC | grep -v grep | wc -l` if [ $count != 0 ]; then echo $ENC "is already running." exit fi
cd $SRCDIR
hits=`find . -maxdepth 1 -mmin -$WAITMIN -type f | wc -l` if [ $hits -gt 0 ] ; then echo "Source directory is currently used." exit fi
for f in * do
if [ ${f##*.} != $SRCEXT ] ; then echo "skip ${f} ..." continue fi
g=${f/\.$SRCEXT/\.$DSTEXT} if [ -e $DSTDIR/${g} ] ; then echo "skip ${f} ..." continue fi
echo "Processing ${f} ..." $ENC -i "$SRCDIR/${f}" -o "$DSTDIR/${g}" --preset=$PRESET
done
|
スクリプトの実行
cron に設定すれば定期的に処理を実行してくれます。
毎日4:00 に実行する場合、crontab -e
で以下のように設定します。
crontab -e0 4 * * * /PATH/TO/m2ts2m4v.sh
|