自動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カットは完璧ではないので、エンコード結果を確認してから削除するのがおすすめです。
コメント
このページからエンコードまで自動で、できるようになりました。ありがとうございました。
お役に立ててよかったです。
こちらのサイトのおかげで色々できるようになって感謝です。本記事における自動処理も問題なくできるようになりました。ありがとうございます。ところで、手動でエンコード部分のみを行いたい場合は、どうすればいいでしょうか?CMカットのほうはTSファイルをjlse_bat.batに投げ込めばできますが、そのあと生成されたavsファイルはffmpeg.exeに投げ込んでも実行されません。aviutlではエンコードできますが、ffmpegは自動処理でないと使えないんでしょうか?
以下のようなバッチファイルにavsファイルをドラッグ&ドロップすればエンコードできます。
ffmpeg.exeとバッチファイルをjlse_bat.batと同じフォルダに入れてください。
出力先はavsファイルと同じフォルダです。
ファイル名もavsファイルと同じになります。
出力先とファイル名をTSファイルと同じにすることも可能だと思いますが、面倒そうなのでとりあえずこの形で書いてみました。
わざわざコードまで書いていただいてありがとうございます!…が、試してみたところ、コマンドプロンプトが一瞬立ち上がったあとすぐに閉じてしまい、処理は実行されませんでした。
ffmpeg.exeとバッチファイルをjlse_bat.batと同じ場所に置いていますか?
できました!新たに作ったバッチファイルの改行コードがLFのみになってたことが原因でした。ありがとうございました!!
お役に立ててよかったです。