※その1~その3までとの互換は無いです。
基本的にはこのサイト
EDCBで録画して自動CMカット後QSVエンコード ~速~ Part1
この通りにjoin_logo_scp試行環境を導入するところまで進めていくのだが、以前の環境で再利用できるものは再利用したいので、いくつか変更を。
①放送局名とロゴデータの一致はSCRenameに任せたい。
②フォルダの半角スペースはそのまま利用したい。
③解像度はFHDにしたい。
④再生時にFluid motionに有効にしたいので24pで出力したい
⑤フォルダ分け方法は前回のAutoEncodeをそのまま利用したい。
放送時期でのフォルダ分けもしたい。
まあこんなところでしょう。
★EDCBが呼び出すbatの作成
AutoEncode改.bat
@echo off
for %%X in (%~dp0*_.ts) do cscript C:\auto_enc\DATA\SCRename\SCRename.vbs "%%X" "$SCservice$_$SCtitle$@$SCdate2$"
for %%P in (%~dp0*.ts) do call C:\auto_enc\AutoEncode_ex.bat "%%P"
★AutoEncode改が呼び出すbat(AutoEncode_ex.bat)
まず@echo offの下に
rem 以下3行排他処理
call :main %* 4>>"%~dpnx0"
goto :eof
を追加続いて
rem MP4folderとその下の行を削除し、ファイルパス変数定義の一番下に
rem 入力ファイル名
SET filename=%~nx1
rem 放送局名
set LGD=%~dp0DATA\join_logo_scp試行環境\logo
を追加。その直下にフォルダ分け&リネームの前処理を記述
※コード汚いからいい案があったら変更します
やってることは単純で、
変換後のファイルは タイトル + #回数.mp4
TSファイルは タイトル + @ + yyyymmdd +#回数.ts
にリネームします。
保存先は 保存フォルダ\yyyy + Q +[1-4:四半期表記]
になっています。
rem 放送時期-四半期表記の取得
set /A MM=%JLS_path:~-4,1%
if %MM% EQU 0 ( SET /A MO = %JLS_path:~-3,1%) else ( SET /A MO = %JLS_path:~-4,2%)
set /A tmp = %MO%%%3
if %tmp% EQU 0 ( set /A QT = %MO%/3 ) else ( set /A QT = %MO%/3+1)
SET /A YY = %JLS_path:~-8,4%
rem TSfolder
SET TSfolder=J:\Rec\%YY%Q%QT%
rem MP4folder
SET MP4folder=K:\変換後\%YY%Q%QT%
rem 2クールモノ対策として、前期フォルダの準備
rem ex)放送月:201704→2016Q4
SET /A BQT = %QT%-1
if %BQT% EQU 0 (
SET /A QTB = 4
SET /A BY= %YY% - 1
)
if %BQT% EQU 0 (
SET MP4folderB=K:\変換後\%BY%Q%QTB%
SET TSfolderB=J:\Rec\%BY%Q%BQT%
) else (
SET MP4folderB=K:\変換後\%YY%Q%QTB%
SET TSfolderB=J:\Rec\%YBY%Q%BQT%
)
:GET_STRLENa
for %%a in (%LGD%\*.lgd) do (
echo %filename%|find "%%~na"
if not errorlevel 1 set LogoFdata=%%a & set Kyoku=%%~na
)
set st=%Kyoku%
set KyokuNameCount=0
:LOOP_HEADa
if defined st (
set st=%st:~1%
set /A KyokuNameCount+=1
goto :LOOP_HEADa
)
setlocal enabledelayedexpansion
set /A KyokuNameCount+=1
set FolderNamel=!filename:~%KyokuNameCount%,-12!
set TSl=!filename:~%KyokuNameCount%,-3!
endlocal && set FolderName=%FolderNamel%&set TS=%TSl%
rem ---------保存先フォルダの確認----------
:MOVEcom
if exist "%MP4folder%\%FolderName%" (goto MOVEcom2)
mkdir "%MP4folder%\%FolderName%"
:MOVEcom2
if exist "%TSfolder%\%FolderName%" (goto MOVEcomB)
mkdir "%TSfolder%\%FolderName%"
rem 2クールモノ判定
:MOVEcomB
if not exist "%MP4folderB%\%FolderName%" (goto MOVEcomB2
) else (
SET MP4folder=%MP4folderB%
)
:MOVEcomB2
if not exist "%TSfolderB%\%FolderName%" (goto movefile
) else (
SET TSfolder=%TSfolderB%
)
rem -----------話数処理(変換済のファイル数カウント)----------
:movefile
for /f "usebackq" %%i in (`dir /b "%MP4folder%\%FolderName%"^|find /c "%FolderName%"`) do (
set kaisuu=%%i
)
set /a kaisuu+=1
FHD&逆テレシネの処理は、
rem ~~~~~~エンコード用avsへ追記
echo Lanczos4Resize(1920,1080) >> "%result_path%\in_cutcm_logo.avs"
echo IT(fps = 24, ref = "TOP", blend = false, diMode = 0) >> "%result_path%\in_cutcm_logo.avs"
echo return last >> "%result_path%\in_cutcm_logo.avs"
※今回はIT_YV12を用いたが、Aviutl用フィルタではなくAvisynth用フィルタであれば何を用いても大丈夫なはず。もちろん然るべき場所への.dllの配置は必要。
※自動生成されるavsファイルにインタレ解除関係のスクリプトが見当たらないので、そこは放置。もしあったらそこは削除で。
ファイル移動は
ren "%~dp0%M3%.mp4" "%FolderName%#%kaisuu%.mp4"
move /-y "%~dp0%FolderName%#%kaisuu%.mp4" "%MP4folder%\%FolderName%"
ren %1 "%TS%#%kaisuu%.ts" & move /-y "%~dp1%TS%#%kaisuu%.ts" "%TSfolder%\%FolderName%"
に変更。最後に、ファイル削除部分に
del "%~1.lwi" >nul 2>&1
を追記。★ロゴ検出
C:\auto_enc\DATA\join_logo_scp試行環境\setting\ChList.csvA列に入ってる放送局名と、ロゴファイルの名前を一致させる。
自分の環境では、TOKYO MX→TOKYOMXとスペースを省いた。
C:\auto_enc\DATA\join_logo_scp試行環境\jlse_bat.bat
77~78行目を以下のように変更
set LOGO_PATH=%LG_DIR%%LOGO_NAME%.lgd
rem set LOGO_PATH=%LG_DIR%%LOGO_INST%.lgd
★まとめ

環境はi7 7700k・DDR4-2133 32GB。CM検出とQSVEnc合わせて10分ほどなので、Avisynthフィルタでもう少し高画質を狙ってみてもいいかもしれない。
次はスクリプトで対応できる範囲でフレーム補間をやってみたい。
追記1:フレーム補間はファイルサイズが現実的ではないので地デジエンコに関しては見送り。と言うか多分やらない。
追記2:ts_parserはDrop/ScrambleのあるTSファイルを通すと100%落ちる(再生に影響がなくても)。となるとDGindexかts2aacかになるんだけど、処理速度がぜんぜん違う(らしい)ので悩みのタネ。
0 件のコメント:
コメントを投稿