Comskip で MPEG2-TS の CM を自動検出して ffmpeg でカットする

Comskip とは


Comskip とはMPEG動画をコマンドラインから起動するフリーのCM検出ツール。Windows版の他に有志の人が改造した UNIX版もある。

本家サイト
Comskip
github Comskip

配布先:comskip81_092.zip(2016年3月16日 時点)
Directory Listing of /files/

試した動画は BS11 のリトルバスターズ!~Refrain~ 第12話。

実行コマンド
comskip.exe -t -d 255 -v 1 --ini=comskip.ini "リトルバスターズ!~Refrain~ 第12話.ts"

comskip.ini の内容 DL先:Dropbox - comskip.zip

CPU性能とHDDやSSDの読み込み速度にもよるが、4分30秒程度、SSDだともっと高速に解析が終わり、分割する時間とフレーム数が解析結果から得られる。基本的に ffmpeg で使うのは分割時間なので .vdr ファイルをテキストエディタで開いて本編とCMの時間を確認して問題なければそれでカットする。

リトルバスターズ!~Refrain~ 第12話.vdr の内容
0:00:00.00 start
0:00:03.67 end
0:01:32.69 start
0:02:43.32 end
0:09:55.36 start
0:10:55.65 end
0:25:43.54 start
0:30:03.63 end


start と end が逆になっているが、3.67秒からOPが始まり、1秒ほどOPが短いがそこで切れて、10秒の提供と60秒のCMがあり2分43.32秒からAパート、Aパートの終わりから60秒CMがあってBパートとEDまで。次回予告と終わりの提供は検出されていない。

hh:mm:ss 形式の引き算ができるウェブサービス
Time Calculator

自動化したバッチファイル配布記事:comskip から ffmpeg で自動カットするバッチファイル

わかったこと
  • ロゴデータを元にしているので提供が検出されず、CM時間分を考慮し必要ならば手動で追加する。
  • 次回予告は10秒と短く検出されないので提供と同様に手動で追加する。
  • ffmpeg でカットに必要なのは .vdrファイルで、処理時間のかかるログ出力は不要だが、内容確認として引数に -v 1 を指定するのもあり。
  • volume_slip は40より30にして値を小さくしたほうが精度が上がったが10にしても変化はなかった。
  • delete_show_after_last_commercial 1にしても変化なし。
  • delete_show_before_or_after_current 1にしても変化なし。
  • max_volume 15から100にすると精度が落ちた。
  • output_avisynth 0にすると処理が高速化した。Avisynthでtrimしない場合はオフにする。
  • 必要のないログデータ出力は処理時間がかかるので出力しない。
  • 詳しい設定方法は Comskip 同梱の manual.html, tuning.html を読む。

.vdr ファイルから ffmpeg のカット時間を計算する


ffmpeg の入力時間はそのまま指定することができるが、出力時間は出力する時間帯から入力時間を引かないとダメなのでその部分は手動計算する。さらに映像の長さと音声の長さは一致していないので mediainfo で調べて遅延時間分も考慮する必要がある。

mediainfo の音声部分の下の方に結果が表示される(下は英語表記)
Delay relative to video : -415ms

0.415秒音声が映像より先に始まっているので予め音声をその時間分だけカットして出力する。
ffmpeg -ss 0.415 -i "リトルバスターズ!~Refrain~ 第12話.ts" -acodec copy -vn 12.aac

次にOPパートの映像をカットする。OPは90秒が基本なので引き算せずに90秒に変えても良い。
ffmpeg -ss 03.67 -i "リトルバスターズ!~Refrain~ 第12話.ts" -t 90 -vcodec copy -an 12OP.m2ts

音声は comskip で計算せずに映像の長さに合わせてカットする。映像の長さは ffmpeg で調べる。
ffmpeg -i "12OP.m2ts"

出力結果を抜粋
Duration: 00:01:29.79, start: 1.648011, bitrate: 17824 kb/s

音声をカットする。
ffmpeg -ss 03.67 -i 12.aac -t 00:01:29.79 -acodec copy 12OP.aac

同様にAパートとBパートを分割するが、CM時間が60秒と決まっている場合などは開始時間や終了時間をその値だけで決めずに、前後のカット時間の1秒未満の値を参考にすると余計なフレームを混在させずに済むことがある。

今回はAパートの入りでKADOKAWAのCMが入り込んでいたのでOP終わりの時間を参考にしてAパートの入り時間を決めて計算した。
ffmpeg -ss 2:43.69 -i "リトルバスターズ!~Refrain~ 第12話.ts" -t 7:11.67 -vcodec copy -an 12A.m2ts
ffmpeg -ss 2:43.69 -i 12.aac -t 00:07:11.33 -acodec copy 12A.aac


解析結果になかった次回予告と提供はBパート終わりから60秒後なのでそれもカットする。次回予告は10秒で提供も10秒で合わせて20秒カットする。
ffmpeg -ss 0:26:43.54 -i "リトルバスターズ!~Refrain~ 第12話.ts" -t 20 -vcodec copy -an 12C.m2ts
ffmpeg -ss 0:26:43.54 -i 12.aac -t 19.62 -acodec copy 12C.aac


ここまで出力してOPとAパートとBパート、次回予告と提供の4つの映像と音声の合計で8つのファイルが出来上がり、一度に連結(join)と合成(mux)を行う。

concat プロトコルを使い一度に出力
ffmpeg -i "concat:12OP.m2ts|12A.m2ts|12B.m2ts|12C.m2ts" -i "concat:12OP.aac|12A.aac|12B.aac|12C.aac" -c copy -y 12OPABC-mux.m2ts

まとめ


  • 入力時には .ts だったが出力時に .m2ts にしているのは DLNA 経由の TV で見るためである。
  • 映像より短い音声を連結して音ズレの心配はないかと思われるが、気になるほど音はズレていない。
  • 動画の総時間は 23分48.46秒 で1秒半ほど短いような気がするが手軽にカット出来て実用性は高い。
  • 完璧に本編をカットしているわけではなく再エンコード無しに連結しているので連結時に映像が乱れたり、CMが数フレーム混在したり本編が数フレーム足りない動画になる。理由はカットした動画の先頭フレームのタイプが必ず Iframe になるので、再エンコード無しに本編だけ正確にカットして連結することは不可能である。

追記 2014/01/01
この方法で連結した動画を tsMuxeR 2.6.9 で変換した BDMV形式で BDに焼いても BDプレイヤではおそらく再生できない。MPC-HC なら再生できた。音声を AC3に変換した場合でも BDプレイヤで再生できるディスクが出来なかった。

追記 2014/01/05
chotBDAV を使えば、再生できるBDディスクが作れた。

追記 2014/01/16
動画のファイルサイズは .m2ts よりも .ts の方が小さく、どちらの形式で一時出力して連結しても動画は同じものになる。

動画のフレームタイプを調べるコマンド
ffmpeg -i video -an -vf showinfo -f null - > log.txt 2>&1

iskey:1 type:I とあり、iskey が 1 だとキーフレームで、type がフレームタイプになる。

関連記事
参考にした記事
関連記事

この記事へのコメント

管理人のみ通知 :

トラックバック


ニコニコチャンネル始めました
ニコラボチャンネル
スポンサード リンク
THE IDOLM@STER THE@TER ACTIVITIES 03
THE IDOLM@STER THE@TER ACTIVITIES 03

Fate/EXTELLA REGALIA BOX for PlayStation (R) 4 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4
Fate/EXTELLA REGALIA BOX for PlayStation (R) 4 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4

妖怪ウォッチ くったりぬいぐるみだニャン ジバニャン
妖怪ウォッチ くったりぬいぐるみだニャン ジバニャン

Fate/EXTELLA VELBER BOX 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4
Fate/EXTELLA VELBER BOX 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4

Fate/EXTELLA REGALIA BOX for PlayStation (R) Vita 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS Vita
Fate/EXTELLA REGALIA BOX for PlayStation (R) Vita 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS Vita

【早期購入特典あり】初音ミクシンフォニー~Miku Symphony 2016~オーケストラ ライブ CD(初音ミクシンフォニー描き下ろしクリアファイル付き(ランダム配布))
【早期購入特典あり】初音ミクシンフォニー~Miku Symphony 2016~オーケストラ ライブ CD(初音ミクシンフォニー描き下ろしクリアファイル付き(ランダム配布))

「うたわれるもの 偽りの仮面&二人の白皇」歌集(初回限定盤)
「うたわれるもの 偽りの仮面&二人の白皇」歌集(初回限定盤)

TVアニメ『ラブライブ!サンシャイン!!』挿入歌シングル「想いよひとつになれ/MIRAI TICKET」
TVアニメ『ラブライブ!サンシャイン!!』挿入歌シングル「想いよひとつになれ/MIRAI TICKET」

『刀剣乱舞-花丸-』 歌詠集 其の三 特装盤
『刀剣乱舞-花丸-』 歌詠集 其の三 特装盤

本好きの下剋上~司書になるためには手段を選んでいられません~第一部 「本がないなら作ればいい3」
本好きの下剋上~司書になるためには手段を選んでいられません~第一部 「本がないなら作ればいい3」

新着記事と追記・編集記事
スポンサード リンク
ブログ内検索
プロフィール

Author:ロベルト
お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab
ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

カテゴリ
アクセスの多い記事
記事アーカイブ

最新コメント
リンク
ニコニコ静画
アニメカテゴリ毎時ランキング
免責事項
当ブログはリンクフリーです。記事によりトラブルが生じた場合でも、当ブログ管理人は一切の責任を負いません。 当ブログに記載されている情報の正誤や利用は、ご自身の判断でお願いします。 紹介したアプリケーションに関する問い合わせは作者に問い合わせてください。ニコニコ動画に関する質問はまずは公式掲示板、2ch、各Q&Aサイトを参照ください。
ブログの読者になる(RSS)
アクセス数