ネットラジオをウォークマンで

今使っているウォークマンだとたびたび再生位置がリセットされる。通常の音楽だと別に気にならないのだが、ネットラジオとか入れていると再生位置がリセットされるのは非常に困る。
しかしながら音楽としてウォークマンに入れると前述のように再生位置がリセットされるのだが、動画として入れると再生位置がファイル単位で記憶される上に再生済みかどうかも記憶される。よってネットラジオ等再生位置がリセットされると困るものの類は動画としてファイルを作り直して転送することにした。以下にそのためのバッチファイルを書いておく。

@echo off
setlocal ENABLEDELAYEDEXPANSION
set NEROAAC="C:\Program Files\megui\tools\neroaacenc\neroAacEnc.exe"
set AVS2WAV="C:\Program Files\PSPでVFR\tool\avs2wav.exe"
set MP4BOX="C:\Program Files\megui\MP4Box.exe"
set X264="C:\Program Files\x264\x264.exe"
set AAC_OPTIONS= -q 0.2
set X264OPTIONS= --profile baseline --preset ultrafast --level 21
set CALLAPP=START "" /B /BELOWNORMAL /WAIT

rem 複数ファイルのループ処理
SET ARGV=%*
FOR %%I IN (!ARGV!) DO CALL :MAINLOOP "%%~I"
GOTO :EOF

:MAINLOOP
rem ファイル設定
SET TGT_FILE=nul
SET TGTAFILE=nul
SET TITLE=%~n1
SET IN_FILE=%~dpnx1
SET WORKPATH=%TMP%\%~n1tmp
SET OUT_PATH=H:\PSP\movie\nwx
SET WAV_FILE=%WORKPATH%\%~nx1_tmp.wav
SET AVSFILE=%WORKPATH%\%~nx1_tmp.1.avs
SET OUTVFILE=%WORKPATH%\%~nx1_tmp.video.mp4
SET OUTAFILE=%WORKPATH%\%~nx1_tmp.audio.mp4
SET OUTMFILE=%WORKPATH%\%~nx1_tmp.mux.mp4

SET OUT_FILE=%OUT_PATH%\%~n1.mp4

IF EXIST "%OUT_FILE%" GOTO :EOF
IF NOT EXIST "%WORKPATH%" mkdir "%WORKPATH%"
IF NOT EXIST "%OUT_PATH%" mkdir "%OUT_PATH%"

ECHO A = DirectShowSource("%IN_FILE%", video=false, audio=true) >"%AVSFILE%"
ECHO A = A.Audiorate ^^!= 48000 ^^? A.SSRC(48000, false) : A >>"%AVSFILE%"
ECHO V = ColorBars(width=432,height=240).ChangeFPS(15).Trim(0,15*A.AudioLength/A.AudioRate) >>"%AVSFILE%"
ECHO V = subtitle(V,"%TITLE%",font="小塚明朝 Std Sub R",size=26,text_color=$ddddff,align=5) >>"%AVSFILE%"
ECHO V = ShowTimeCode(V,align=3,x=V.width-8,y=V.height-1,size=20) >>"%AVSFILE%"
ECHO V = ConvertToYV12(V) >>"%AVSFILE%"
ECHO AudioDub(A, V) >>"%AVSFILE%"

IF NOT EXIST "%WAV_FILE%" %CALLAPP% %AVS2WAV% "%AVSFILE%" "%WAV_FILE%"
IF NOT EXIST "%OUTAFILE%" %CALLAPP% %NEROAAC% -if "%WAV_FILE%" -of "%OUTAFILE%" %AAC_OPTIONS%
IF NOT EXIST "%OUTVFILE%" %CALLAPP% %X264% %X264OPTIONS% --output "%OUTVFILE%" "%AVSFILE%"

IF NOT EXIST "%OUTMFILE%" %CALLAPP% %MP4BOX% -add "%OUTVFILE%" -add "%OUTAFILE%" -new "%OUTMFILE%"
IF EXIST "%OUTMFILE%" COPY /Y /B "%OUTMFILE%" "%OUT_FILE%"

IF EXIST "%OUTMFILE%" RMDIR /S /Q "%WORKPATH%"

:EOF