2 min read

ComskipでCMカットをしてみた

Chinachuを使っての録画環境が整ったが、やっぱりCMが気になる。

Linux上でCMをカットする策はないものかと検索してみたらすぐにヒット。
ComskipというWindows向けのアプリケーションがあるということ、それをLinuxでWineで走らせることができるということが分かった。

そしてさらに検索結果の下のほうを見ていくとRubyで書かれたスクリプトプログラム、ComskipBatch.rbというものがあるということも分かった

それの使い方などの覚え書きを書いておく。

ffmpegのインストール

なんにせよffmpegがないと始まらない。
ffmpegのコンパイル方法が公式にあるため、そこを参考にコンパイルする

パッケージインストール

とりあえずcomskipをLinux上で走らせるためのパッケージをインストールする

$ sudo apt-get update
$ sudo apt-get install wine libav-tools

comskipのダウンロード

$ sudo mkdir -p /opt/comskip_batch/comskip
$ cd /opt/comskip_batch/comskip
$ sudo wget http://www.kaashoek.com/files/comskip81_088.zip
$ sudo unzip comskip81_088.zip

現時点(2015年9月22日)ではcomskip81_088が最新。こちらでファイル一覧を見ることができる。

ComskipBatch.rbのダウンロードと構築

ComskipBatch.rbはここからダウンロード(zip形式)して/home/hoge/にでも置いておく。

$ sudo mv /home/hoge/ComskipBatch.zip /opt/comskip_batch/
$ cd /opt/comskip_batch/
$ sudo unzip ComskipBatch.zip
$ sudo mv comskip.ini comskip/comskip.ini

これで準備は終わりだ。

あとはサイト様を見てやっていくといいかも。
一応こちらにも書いておく。

実行例

$ ruby /opt/comskip_batch/ComskipBatch.rb --margin 2 \
--file /home/hoge/recorded/録画.ts \
--move_to /home/hoge/recorded/success/
--failed_to /home/hoge/recorded/failed/

引数の説明

引数 説明
--file /home/hoge/recorded/録画.ts CMカット対象のtsファイルへのフルパス
--margin 2 録画が開始されるまでの秒数。comskipでこのmarginの秒数以下の本編の冒頭部を見つけた場合、それを削除する。ChinachuのoperRecOffsetStartオプションに+1000くらいすればいいんじゃないかな
--minus 300 minus.txtを設置している場合と同じ動作になる。対象ファイルの後ろ数分に必ずCMが入ることがわかっているファイルを指定する場合に合わせて指定する。
--move_to /home/hoge/recorded/success/ バッチファイルで処理済みのファイルを送る先。1つのファイルに対して何度も実行する事を防止する目的で、処理済みのファイルを退避させるために利用。
--failed_to /home/hoge/recorded/failed/ バッチファイルでCMカットで失敗したファイルを送る先。ファイルサイズが下記の--cut_rateよりも小さくなった場合に、このオプション指定先にファイルが送られる。
--cut_rate 70 (カット後のファイル容量÷カット前のファイル容量) × 100の結果と比較。70を指定すると、70パーセント以上ファイルサイズが小さくなってしまった場合にはカット失敗とみなす。30分番組だと、CMは5分(17%ぐらい)は入っているので、未指定の場合には70としている。

おしまい

使ってみた感じ、かなりの精度でCMのみを切り取ってくれる。
いつかサーバーを非力でないものにしたら録画終了と共にCMカットを自動でやるようにスクリプトを組んで動かしてみよう。

使用する前に一つ思ったのは、録画ファイル自体はどうなるんだろうという疑問。
結果、録画ファイルは.bakがつけられ、「移動」された。