fc2ブログ

PREV | PAGE-SELECT | NEXT

≫ EDIT

【QSVEncC】不完全な番組前後の自動CMカット【avisynth】

この記事はQSVEncC+avisynthで高速自動エンコードするを導入している人向けです。
QSVがよくわからない方は
Aviutl+QSVでエンコードしてみるを見て下さい。

とりあえず問題ないっぽいので記事にしておきます。不完全な番組前後の自動CMカットです。
基本的には本編から再生し始め、予告後の提供で終わるMP4が作成されます。

が、局や番組によってはまちまちで、カットはされても少しCMが残る場合があります。
スムーズな視聴の為ではなく、ファイルサイズ削減の為なのであしからず。
まぁ、削減といってもエンコード後のmp4で100MB以下程度の削減なので微妙ですが・・・
精度の高い自動CMカットならlogoguilloにチャレンジした方が良いと思います。自分はできてません。T_T


※この記事で紹介するものより高精度な自動CMカットスクリプトを書きました
PowerShell + QSVで自動エンコード・自動CMカット part1 Firefoxは情弱のたしなみ
スポンサーリンク



早速ですがバッチファイルを。今までのとは多少変わります。TVRock2.batとしました。
CMカットとは関係無いものも含んでいます。

使い方

使用するには、
・MOVEフォルダの作成
・CMフォルダの作成
・QSVEncC.batの書き換え
・TVRock2.batの作成
が必要です。自分はMOVEフォルダとCMフォルダは一次フォルダの中に作りました。

QSVEncC.batの書き換えは以下のコマンドを「残骸ファイル削除」のdelコマンドの下にでも書いて下さい。
if exist %output_mp4% move %~1 %MOVE%
こうする事で、mp4が作成されたら%MOVE%に設定したフォルダにエンコしたTSが移動する事になります。

if exist %output_mp4% del %~1
すぐ削除したければ上のようにすればよいですが、完全に削除されます。

後はパス設定した
TVRock2.batを作って、TSを投げ込めばそのまま使えるかと。
確認が取れたらTVRockの後処理コマンドに書けば不完全ながらもCMカットしてくれるはずです。

説明
それでは簡単に説明を。
やっている事はすごく単純で、TsSplitterの「番組情報及び、PMT情報で分割する」の設定に頼っています。
call %TsSplitter% -EIT -SD -1SEG -SEP2 -OUT "%SAVE%" -WAIT2 "%~1"

下の画像の選択されているのが元TSで、録画TSを上のコマンドに通すとその下の4つのTSファイルになります。
要は2.66GBと一番ファイルサイズがでかいTSのみエンコードし、他は削除しているだけです。

大抵の深夜アニメの録画をすると、
[前番組CM][本編・OP][CM][Aパート][CM][Bパート][ED][CM][予告・提供][次番組CM]
となっているので、
[前番組CM][本編・OP][CM][Aパート][CM][Bパート][ED][CM][予告・提供][次番組CM]
上の赤い部分がカットされ削除される事になります。冒頭にも書きましたがCMが残る事は十分に有り得ます。

問題点の対策
ただ、自動エンコードですので以前のTVRock.batだと、50.46MBの~HD.tsのみエンコードされ、
終了してしまいます。なのでファイルサイズで場合分けをして、本編のみエンコードするようにしました。
流れとしては、
1.TsSplitterで元TS分割

2.元TSのサイズで分岐
(A)800MBより大きい(通常30分番組)
  3.分割したTSが400MB以下ならCMフォルダに移動、より上ならエンコード
  4.全てのTSに3を行う様にループして終了

(B)800MB以下(短時間番組)
  3.分割したTSが80MB以下ならCMフォルダ移動、より上ならエンコード
  4.全てのTSに3を行う様にループして終了
ループ処理があるものを箇条書きにするのはよく分かりませんが、こんな感じになっています。
CMと判定されたTSはエンコードされずにCMフォルダに移動されるので削除はされません。

処理(A)に関してですが、上の画像に有るように大きいCMは50MBと300MB程度のものです。
なのでこれらをカバー出来る400MBにしてみました。基本的には50MBモノが多いです。

処理(B)に関してですが、まず最初の元TSの場合分けは(B)の為の物です。
今回テスト対象としたのは5分アニメの「ミス・モノクローム」は本編となる部分が400MB無いので、
処理(A)だとCM扱いされてしまいます。それでは困るのでCMと判断するサイズを小さくしています。


エンコードの比較
CMカット有りと無しとで速度を測ってみました。エンコード対象は一般的な30分アニメです。
TSをTvRock.batに投げ込んでからmp4が出来るまでの実際の時間を図っています。

CM有り:10分52秒
CM無し:8分47秒
サイズは124MBくらいの削減になっています。
ですが、100MB以上の削減出来る番組はあまり無く、大体下ぐらいの削減になると思います。


CM有り:10分14秒
CM無し:9分42秒
35MB程度の削減なのでエンコード速度も殆ど差がありません。

と言うことなのであまり期待しない方が良い感じです。^^;

基本的に不完全
番組情報でカットしてるので、間違った本編カットは無いと思いますが、
本編をCMと判断している可能性もありますので、テストは行ったほうが良いです。
・元TSが800MBより上で、CMが400MB以上の場合
・元TSが800MBより上で、本編400MB以下の場合
・元TSが800MB以下で、CMが80MBより上の場合
などは上のバッチでは対応できないです。僅かな差であれば値を変えて下さい。
一応1週間以上やってみて、今のところ問題はなさそうです。CMの余りは結構有りますが。

終わりに

最初はTsSplitterで「音声チャンネル切り替えで分割」の設定も入れていたのですが、
基本的に最近の深夜アニメではまず音声分割されず、されるとすれば多重音声放送の映画とかです。

上手くいけば本編とCMの分離が可能ですが問題があります。
まず本編と思われるTSを結合した後にエンコードする方法。
これはかなり明らかな音ズレが発生するようなので使えません。TS修復してもダメ。

もう一つ、各TSをmp4にしてから結合する方法。
わかりづらいですが、後の方になると1秒ほどの音ズレが発生します。
原因は映像と音声の長さが微妙に違う事により微妙な音ズレが発生している様です。

mp4結合の問題は
JoinMP4Files 1.0.2.0を使えば解決出来ますが、
これを自動化となると、batだと難しそうです。
とまぁ面倒なので、「音声チャンネル切り替えで分割」は無しにしました。

不用・必要ファイル振り分けについて

これはCMカットとは関係ないのですが、分けるのも面倒なので一緒にしました。
単純にエンコード処理に入れたくない
キーワードを含んできるTSはMOVEフォルダに移す様になっています。
自分はBSは基本的に予備録画用で、毎回エンコードはしなくないので処理から外します。

ただそうすると困るのが『COPPELION』の様なBS11ぐらいでしか放送しない番組はエンコ―ドされないので、
一旦BS11で振り分けさせてから、再度一時フォルダに残すと言う面倒な事をやっています。


とまぁだらだら書きましたがこんな所です。
やっぱり自動CMカットするなら全てのCMに対して行いたいのでなんとかしたいです。
ではでは
関連記事
スポンサーリンク

| エンコード | 22:44 | comments:0 | trackbacks:0 | TOP↑















非公開コメント

http://higitune.blog106.fc2.com/tb.php/119-5bda6b82

PREV | PAGE-SELECT | NEXT