Ubuntu16.04 LTSで深夜の間にCMカットして、H.264エンコードを自動的に実行するようにセットアップします。インストールの流れは下記のとおり。
- Ubuntu16.04 LTSのインストール
- epgrec UNAのインストール
- rubyスクリプト『ComskipBatch.rb』をUbuntu16.04上にインストール(本投稿)
- cronで実行されるようにする(本投稿)
なお、ComskipBatchの使い方は『cmカットスクリプト『ComskipBatch.rb』の紹介(Linux / Windows両対応)』を見てください。
必要パッケージのインストール
下記のように必要パッケージをインストールします。
sudo apt-get update sudo apt-get upgrade sudo apt-get install wine libav-tools ffmpeg ruby
最後にcomskipと、ComskipBatchダウンロード。下記のwget先のリンクが変更になっていた場合にはこちらからリンク先を確認して下さい。
sudo mkdir -p /opt/comskip_batch/comskip cd /opt/comskip_batch/comskip # comskipをダウンロードする sudo wget http://www.kaashoek.com/files/comskip81_092.zip # zipファイルを展開する unzip comskip81_092.zip # comskip_batchをダウンロードして、展開する # ダウンロードしたファイルを下記に配置する。comskip.iniはダウンロードしたファイルで上書き修正する。 /opt/comskip_batch/ComskipBatch.rb /opt/comskip_batch/comskip/comskip.ini
バッチ処理で使うディレクトリの事前準備
処理成功したら。『ENCODE_ONLY』ディレクトリへ、処理失敗(例えば、カットし過ぎて30分のTSが15分になった場合)したら『CMカット失敗』へファイルを移動させるため、事前にそれらのディレクトリを作成しておきます。
# epgrecUNAを使っている前提なので、tsは下記ディレクトリに作成されると仮定。 # 他のソフトを使っている場合には、適宜変更します。 export epgrecDIR=/var/www/html/epgrec/video/ mkdir $epgrecDIR/ENCODE_ONLY mkdir $epgrecDIR/CMカット失敗
ComskipBatchの動作確認
自動的に実行されるように、Cron登録する前に、単体での動作確認を実行しておきます。なお、対象のファイルをmvしたりするので、事前にバックアップを取得してから実行してください。
ruby /opt/comskip_batch/ComskipBatch.rb --margin 3 --file "$epgrecDIR/TSファイル.ts" --move_to $epgrecDIR/ENCODE_ONLY/ --failed_to $epgrecDIR/CMカット失敗 # 成功していたら、こちらにファイルが出来ているはず。 ls $epgrecDIR/ENCODE_ONLY # 失敗したら、こちらにファイルが置かれているはず。 ls $epgrecDIR/CMカット失敗
Cronから呼び出されるcmcut.shの準備
/opt/comskip_batch/cmcut.shとして、下記を保存して、cronに登録すればいいと思います。
#! /bin/bash - source ~/.bashrc source ~/.bash_profile export PATH=$PATH:/usr/local/bin export RUN_DIR=/opt/comskip_batch export epgrecDIR=/var/www/html/epgrec/video export MOVE_TO=$epgrecDIR/ENCODE_ONLY/ export FAILED_TO=$epgrecDIR/CMCUT_FAILED/ cd $RUN_DIR # Comskipで処理 find /var/www/html/epgrec/video -type d \( -name 'ENCODE_ONLY' \) -mmin +1 -prune -o -type f -name "*.ts" ! -name "*CS16*" | xargs -I% ruby $RUN_DIR/ComskipBatch.rb --margin 3 --and_encode --file % --move_to $MOVE_TO --failed_to $FAILED_TO
cronへ登録する
crontab -e
実行する時間帯ですが、下記の条件を出来るだけ満たすようにしてください。日中時間帯に外出している事が多ければ、日中時間帯の実行でも良いと思います。H.264エンコードを含む処理時間はCPU性能によるので、余り遅いようならCPUを変更してもいいかもしれません。
- 節電の為、電気使用量が少ない時間帯
- あまり録画されない時間帯
- サーバの負荷が低い時間帯
2 3 * * * /bin/bash -l /opt/comskip_batch/cmcut.sh
最後に
手作業でCMカット、エンコードしていたら、それだけで一日が終わってしまいますが、それを自動化することは『コンピュータに仕事をさせる事が出来る技術者の特権』ですね。記載内容に不備があったり、『こういう機能があればもっと便利なのに』と言う場合には遠慮なくコメントしてください。