EDCBで録画後に全自動エンコード(FakeAacWav版)

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

自動CMカットとエンコードを行います。
音声無劣化版です。

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

必要

join_logo_scp

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

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

FakeAacWav

音声を無劣化で処理できます。

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

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" -an -vf bwdif=1 -c:v libx264 -preset medium -crf 23 -aspect 16:9 "$FolderPath$\$FileName$_tmp.mp4"
ffmpeg.exe -i "%jlse_dir%result\$FileName$\in_cutcm_logo.avs" -vn -c:a copy "$FolderPath$\$FileName$.wav"
"%jlse_dir%bin\fawcl.exe" "$FolderPath$\$FileName$.wav" "$FolderPath$\$FileName$.aac"
ffmpeg.exe -i "$FolderPath$\$FileName$_tmp.mp4" -i "$FolderPath$\$FileName$.aac" -c copy "$FolderPath$\$FileName$.mp4"

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

使い方

予約登録画面で「録画後実行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

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

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. リリー より:

    このページからエンコードまで自動で、できるようになりました。ありがとうございました。

  2. kei より:

    こちらのサイトのおかげで色々できるようになって感謝です。本記事における自動処理も問題なくできるようになりました。ありがとうございます。ところで、手動でエンコード部分のみを行いたい場合は、どうすればいいでしょうか?CMカットのほうはTSファイルをjlse_bat.batに投げ込めばできますが、そのあと生成されたavsファイルはffmpeg.exeに投げ込んでも実行されません。aviutlではエンコードできますが、ffmpegは自動処理でないと使えないんでしょうか?

    • thtsf より:

      以下のようなバッチファイルにavsファイルをドラッグ&ドロップすればエンコードできます。

      ffmpeg.exeとバッチファイルをjlse_bat.batと同じフォルダに入れてください。

      @echo off
      cd /d %~dp0
      
      rem ループ処理の開始
      :loop
      if "%~1" == "" goto end
      
      rem エンコードの開始
      ffmpeg.exe -i "%~1" -an -vf bwdif=1 -c:v libx264 -preset medium -crf 23 -aspect 16:9 "%~dpn1_tmp.mp4"
      ffmpeg.exe -i "%~1" -vn -c:a copy "%~dpn1.wav"
      bin\fawcl.exe "%~dpn1.wav" "%~dpn1.aac"
      ffmpeg.exe -i "%~dpn1_tmp.mp4" -i "%~dpn1.aac" -c copy "%~dpn1.mp4"
      
      rem 一時ファイルの削除
      del "%~dpn1_tmp.mp4"
      del "%~dpn1.wav"
      del "%~dpn1.aac"
      
      shift
      goto loop
      :end

      出力先はavsファイルと同じフォルダです。
      ファイル名もavsファイルと同じになります。

      出力先とファイル名をTSファイルと同じにすることも可能だと思いますが、面倒そうなのでとりあえずこの形で書いてみました。

  3. kei より:

    わざわざコードまで書いていただいてありがとうございます!…が、試してみたところ、コマンドプロンプトが一瞬立ち上がったあとすぐに閉じてしまい、処理は実行されませんでした。

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