@echo off SETLOCAL cd /d %~dp0 :: 1SegMP4バッチ / 全部入りTSからワンセグMP4,字幕ファイル,番組情報のみTSを作るバッチ :: Ver1.00 :: 作者:ecosis これつくるのに丸三日かかったorz :: ・リネーム名が長すぎる場合、作れない・再生できない場合があるので注意 :: ・金曜ロードショーなどの0chは再生ができるかわからない :: ・TSConverterを使用してMP4化する事で、VLCなどで再生することが可能になるが、モノクロ音声は再生できない? :: ・CCCP+naveで字幕&タイムストレッチ視聴 :: ・PLLibを何とか活用できないかなぁ :: ・TsRenameがコマンドライン出力に対応してくれないかなぁ :: =====↓ユーザー設定↓===== :: 各種アプリのあるフォルダを指定(フルパス) :: 番組情報をもとにファイルをリネーム(オプションはTvRock参照) set tsrenamec="I:\Program Files\TS\tsrenamec\tsrenemec.exe" set tsrenamecOpt=@C'\[.+\]'@mm@dd@wk@sh@sm_@TT :: 字幕ファイル抽出 set Caption2Ass_path=I:\Program Files\TS\Caption2Ass\Caption2Ass.exe :: 番組情報抽出 set tsselect_path=I:\Program Files\TS\tsselect\tsselect.exe :: ワンセグ抽出 set TsSplitter_path=I:\Program Files\TS\TsSplitter\TsSplitter.exe :: ワンセグ→MP4変換 :: ※MP4Box、DtsEditをTSConverterと同じフォルダに置くこと set TSConverter_path=I:\Program Files\TS\TSConverter\TSConverter.exe :: =====↑ユーザー設定↑===== "%Caption2Ass_path%" -silent -format srt "%~1" echo. echo ↑「全部入りTS」から「字幕ファイル」を作りました echo ■xxx.ts → xxx.srt echo. echo 「全部入りTS」の番組情報から「リネーム候補txt」を作ります echo ■xxx.ts → xxx_ren.txt %tsrenamec% "%~1" "%tsrenamecOpt%" > "%~dpn1_ren.txt" echo. echo 「リネーム候補txt」を読み込み、記憶します for /F "usebackq tokens=*" %%a IN (`FIND /V "*" "%~dpn1_ren.txt"`) do SET RENAME=%%a echo. echo 余計な「リネーム候補txt」を削除します echo ■xxx_ren.txt → × del "%~dpn1_ren.txt" echo. ::リネームフォルダ名が既に存在する場合は連番を付けてみる if exist "%~dp1\%RENAME%" GOTO :rename_NG :rename_OK GOTO :rename_next :rename_NG echo ※リネームフォルダ名が既に存在するので連番を付けてみます SET RENBAN=2 :renban_start if exist "%~dp1\%RENAME%_%RENBAN%" GOTO :renban_NG :renban_OK echo ※「_%RENBAN%」付加成功 echo. set RENAME=%RENAME%_%RENBAN% GOTO :rename_next :renban_NG echo 「_%RENBAN%」付加失敗 if %RENBAN%==9 GOTO :renban_STOP set /a RENBAN+=1 GOTO :renban_start :renban_STOP echo ※連番が既に存在するので処理を中止します echo. echo 「字幕ファイル」を削除します echo ■xxx.srt → × del "%~dpn1.srt" echo. GOTO :error :rename_next echo 「全部入りTS」をリネームします echo ■xxx.ts → yyy.ts ren "%~1" "%RENAME%%~x1" echo. echo 格納するフォルダを作ります mkdir "%~dp1\%RENAME%" echo. echo 「字幕ファイル」をリネームして格納します echo ■xxx.srt → \yyy.srt ren "%~dpn1.srt" "%RENAME%.srt" move %~dp1%RENAME%.srt %~dp1\%RENAME% echo. echo 「全部入りTS」から「番組情報のみTS」を作ります echo ■yyy.ts → \yyy.ts "%tsselect_path%" "%~dp1%RENAME%%~x1" "%~dp1\%RENAME%\%RENAME%%~x1" 0x0000 0x0010 0x0011 0x0012 echo. ::0x0000 = (PAT)TS内に含まれるプログラム一覧を、PMTのPID一覧で格納したもの。 ::┣0x0010 = (NIT)チャンネル番号や変調方式、ガードインターバルなど、送信するネットワークに関する情報が含まれる。 ::┣0x0011 = (SDT)チャンネルの名称が含まれる。また、各チャンネル(サービス)で送出されるEITの種類、デジタルコピー制御情報も含まれる。 ::┗0x0012 = (EIT)番組の名称や放送日時、放送内容など、番組に関連する情報が含まれる。EPGは主にこの情報を用いて作成される。 echo 「全部入りTS」から「ワンセグTS」を作ります echo ■yyy.ts → \yyy_1SEG.ts "%TsSplitter_path%" "%~dp1%RENAME%%~x1" -OUT "%~dp1\%RENAME%" -HD -SD -BUFF 64 echo. :: 0x0000 = TS内に含まれるプログラム一覧 :: ┗0x1fc8 = ワンセグデータ ::echo 余計な「全部入りTS」を削除します ::echo ■yyy.ts → × ::del "%~dp1%RENAME%%~x1" ::echo. echo 「ワンセグTS」から「ワンセグMP4」を作ります echo ■\yyy_1SEG.ts → \yyy_1SEG.mp4 "%TSConverter_path%" -r -s "%~dp1\%RENAME%\%RENAME%_1SEG%~x1" echo. echo 「ワンセグMP4」をリネームします echo ■\yyy_1SEG.mp4 → \yyy.mp4 ren "%~dp1\%RENAME%\%RENAME%_1SEG.mp4" "%RENAME%.mp4" echo. ::MP4が作られてなかったら「ワンセグTS」を削除しない if exist "%RENAME%.mp4" GOTO :mp4_NG :mp4_OK echo 余計な「ワンセグTS」を削除します echo ■\yyy_1SEG.ts → × del "%~dp1\%RENAME%\%RENAME%_1SEG%~x1" echo. GOTO :mp4_next :mp4_NG echo MP4が作られてなかったので「ワンセグTS」は残します echo. GOTO :error :mp4_next GOTO :finish :error echo エラー終了。 echo. GOTO :end :finish echo 全過程終了。 echo. :end pause ENDLOCAL