EDCBで録画後に全自動エンコード

スポンサーリンク
スポンサーリンク
エンコード

自動CMカットとエンコードを行います。

スポンサーリンク
スポンサーリンク

必要

join_logo_scp

自動CMカットソフトです。

こちらの記事を参考に導入してください。

FFmpeg

ダウンロードページからffmpeg-git-full.zipをダウンロードします。

解凍して「bin」フォルダにあるffmpeg.exeをEpgTimer.exeと同じフォルダに入れます。

バッチファイル

拡張子を.batにして保存して、EpgTimer.exeと同じフォルダに入れます。

jlse_bat.batがあるフォルダのパスを指定してください。

@echo off

rem jlse_bat.batがあるフォルダのパス(""を付けない、\を付ける)
set jlse_dir=C:\join_logo_scp\

rem 自動CMカットの開始
call "%jlse_dir%jlse_bat.bat" "$FilePath$"

rem エンコードの開始
ffmpeg.exe -i "%jlse_dir%result\$FileName$\in_cutcm_logo.avs" -vf bwdif=1 -c:v libx264 -preset medium -crf 23 -aspect 16:9 -b:a 192k "$FolderPath$\$FileName$.mp4"

rem 一時ファイルの削除
rd /s /q "%jlse_dir%result\$FileName$"
del "$FilePath$.lwi"

使い方

予約登録画面で「録画後実行bat」にバッチファイルを指定します。

出力先はTSファイルと同じフォルダです。

プリセットの「変更」をクリックすれば、バッチファイルを毎回指定する手間が省けます。

解説

-i "%jlse_dir%result\$FileName$\in_cutcm_logo.avs"

in_cutcm_logo.avsを入力ファイルに指定しています。

ロゴ除去しない場合はin_cutcm.avsに書き換えてください。

-vf bwdif=1

インターレース解除です。
1で60fps出力、0で30fps出力です。

-c:v libx264

エンコーダーの指定です。
libx265にすると遅くなりますが、高圧縮になります。

-preset medium

画質と速度のバランスです。10種類あります。

ultrafast
superfast
veryfast
faster
fast
medium
slow
slower
veryslow
placebo

上に行くほど低画質で高速に、下に行くほど高画質で低速になります。
デフォルトはmediumです。

-crf 23

画質と圧縮率のバランスです。範囲は0~51です。
値が小さいほど高画質で低圧縮に、大きいほど低画質で高圧縮になります。

libx264のデフォルトは23です。
libx265のデフォルトは28です。

-aspect 16:9

アスペクト比の指定です。

-b:a 192k

音声ビットレートの指定です。

rd /s /q "%jlse_dir%result\$FileName$"

「result」フォルダに出力されるファイルを削除しています。
必要なら消してください。

del "$FilePath$.lwi"

LWLibavVideoSourceが生成するインデックスファイルを削除しています。

カスタマイズ

逆テレシネ

映画やアニメにおすすめです。
インターレース解除の部分を書き換えます。

-vf pullup -r 24000/1001

リサイズ

-s 1280x720

1280×720にリサイズされます。

マージンの指定

指定したマージン以上録画予定がないときにバッチファイルを実行します。

xtne6f版EDCBで追加された拡張命令を使います。

@echo offの下に書きます。

rem _EDCBX_BATMARGIN_=10

単位は分なので、この場合10分以上録画予定がないときに実行されます。

TSファイルを削除

バッチファイルの最後に書きます。

del "$FilePath$"

ただ自動CMカットは完璧ではないので、エンコード結果を確認してから削除するのがおすすめです。

コメント

  1. xf9df より:

    なぜか録画後自動で実行されません
    助けてください

  2. d より:

    質問させていただきます。
    join_logo_scpは導入済みで、別記事「EDCBで録画後に自動CMカット」内にある下記記述では正常に動作します。

    @echo off

    rem jlse_bat.batのパス(””を付ける)
    set jlse_bat=”C:\join_logo_scp\jlse_bat.bat”

    call %jlse_bat% “$FilePath$”

    ffmpegも導入済みで、別記事「EDCBで録画後にFFmpegでエンコード」内にある下記記述では正常に動作します。

    ffmpeg.exe -i “$FilePath$” -vf bwdif=1 -c:v libx264 -preset medium -crf 23 -c:a copy -bsf:a aac_adtstoasc “$FolderPath$\$FileName$.mp4”

    しかし、本記事のようなCMカットとエンコードを組み合わせたバッチだと、CMカットの処理すら実行されなくなります。ディレクトリは見本と同じ構成なので、特に書き換えずにできるはずなんですが…。

    どのようにしたらよいでしょうか?

    • thtsf より:

      FFmpegは32bitでしょうか?
      AviSynth+なら64bitも使えますが、通常のAviSynthは32bitしか使えません。

    • thtsf より:

      あとCMカットすらできないというのが気になるので、以下のようにCMカットのみのバッチファイルで試してみてください。
      「EDCBで録画後に自動CMカット」の記事とは微妙に違うので注意してください。

      @echo off
      
      rem jlse_bat.batがあるフォルダのパス(""を付けない、\を付ける)
      set jlse_dir=C:\join_logo_scp\
      
      rem 自動CMカットの開始
      call "%jlse_dir%jlse_bat.bat" "$FilePath$"
  3. d より:

    ご返信ありがとうございます。ffmpegは32bitを使用しています。
    また、記述いただいたバッチでは処理されませんでした。「EDCBで録画後に自動CMカット」の記事の記述は実行されて、こちらは実行されない理由がわかりません…。

    • thtsf より:

      jlse_bat.batがあるフォルダのパスにスペースや日本語が含まれていませんか?

      • d より:

        C:\join_logo_scpに置いてあるので半角スペースは含まれていないかと思います。
        ちなみにバッチファイルの文字コードはUTF-8で問題ないでしょうか?

    • thtsf より:

      あとは3箇所にある %jlse_dir% を普通のフォルダパスに書き換えれば確実に動くと思います。

      "%jlse_dir%jlse_bat.bat""C:\join_logo_scp\jlse_bat.bat" にするなど

      • d より:

        できました!文字コードが原因だったようです。UTF-8からShift-JISに変換したところ、問題までエンコードいきました。ご指摘いただいた代入の部分はそのままで大丈夫でした。

        ご丁寧にご対応いただきましてありがとうございました!大変助かりました!!

タイトルとURLをコピーしました