以下のようなスクリプトを作成し、cronで一時間毎に起動するように設定。空行だけのコメントはtdiaryの制限から付けているもの。
#! /bin/sh # cd /usr/local/share/RDService # # lock処理 if [ -e lock ] ; then exit else touch lock fi # for i in *.mpg do # 現在ダウンロード中のファイルの場合、処理対象外 mid_flow=$(lsof "$i") if [ ${#mid_flow} != "0" ] ; then continue fi # name=${i%%.mpg} dst_file="$name".mp4 /usr/local/bin/ffmpeg -y -i "$i" -title "$name" -bitexact -vcodec xvid \ -coder 1 -g 240 -s 320x240 -r 29.97 -b 768 -acodec aac \ -ac 2 -ar 44100 -ab 48 -f psp "$dst_file" # chown user:group "$dst_file" mv "$dst_file" /home/target_dir rm "$i" done # # lock解除 rm lock
途中、cronで/usr/local/binにPATHが通ってなくて、動いたように見えなくて焦った。
あと、クライアントの都合で日本語をEUC-JPに統一するために、RDServiceのシェルスクリプトで文字コード設定。そして、デーモン起動するようにさせて終わり。
#! /bin/sh export LANG=ja_JP.eucJP export LC_ALL=ja_JP.eucJP java -jar /usr/local/share/RDService/RDService.jar -s -p 5500:5509 \ -d /usr/local/share/RDService
SuSEだと、startproc関数を使ってデーモンとして起動させるのね。
自分用のスクリプトなので同時実行性やパーミッションその他諸々はあんま考慮してない。あとは、タイトルによってffmpegに渡すオプションを変化させられるようにしたいのぅ。
(追記):間違ってるところがあったので修正