先日のBDAV作成をもうちょっと考える
先日の PT2→BDAV 作成をもうちょっと頑張ってみる。
指定PIDの抽出
BS2 のような SD の場合、予め PID で切りだしておかないとダメだったりする。
今回は TsSplitter を使う。
オプションに少し悩む…。
最低限 EPG 情報を残す (-EIT) オプションを付けておく必要がある模様。これをつけると NIT/SDT/EIT/TOT (PID:0x10/0x11/0x12/0x14) も一緒についてくる。いくつかオプションを指定しているけど、とりあえずこれだけは忘れないようにしておくこと。
つけない場合 ts2pts.exe で以下のような感じ (not exist...) で失敗する。
> ts2pts.exe -i test01.ts -o 00001.m2ts -b analyzing TS [test01.ts] PAT:OK PMT:OK NIT:OK not exist PAT/PMT/NIT/TOT/EIT/SDT/BIT
NIT とか EIT とかなんぞや?というときは↓を読む。
他のオプションは適当に。 HD 放送なら HD を残せばいいし SD なら SD 放送を残せばいい。 BIT で not exist エラーを吐くのが気持ち悪ければ PID 0x24 も残すようにするといいが、 SD 放送の場合にはなぜか残らない。
BIT はなくても通るので、まぁあまり気にしない。
DVDに焼いたらどうなるの?
DVD-R 一枚におさまるサイズで BDAV 形式で作ってみた。ライティングフォーマットは UDF2.50 を使用。とりあえず手持ちの BW770 に読ませたら AVCREC の DVD として認識してくれてちゃんと再生できた。まぁ 4G ちょっとだと地デジで1時間程度しかおさまらないからネタにしかなりませんけど。
字幕と第2音声について
先日未確認と書いた字幕と第2音声について。
NHK-BS2 でやっている韓国ドラマ (イ・サン) と、地上波 TBS のアニメ会長はメイド様!を BDAV 形式に焼き付けて DIGA くんで確認してみたところ、字幕の再生・第2音声での再生ともに問題なく行うことが出来ることを確認した。
バッチファイル
いちいち 1 つづつコマンドを打ち込むのが面倒なのでバッチファイルを作った。
まず TsSelect/TsSplitter や MurdocCutter 等の TS 切り出し作業は事前に行なっておく。あとは入出力をディレクトリ指定してバッチを流してやればいい。なお必要なプログラムは C:\TOOLS ディレクトリにおいておくことを想定している。
@echo off setlocal ENABLEDELAYEDEXPANSION echo. echo ***************************************************************** echo PT2で取得したTSをBDAV形式に変換するバッチ。 echo. echo [書式] echo %~nx0 (input_dir) (output_dir) (temp_dir) echo 引数は省略可能。 echo 省略時はこのバッチがあるディレクトリを使う。 echo ***************************************************************** echo. PATH="C:\TOOLS";%PATH% SET pwd=%1 SET out=%2 SET ltmp=%3 SET cnt_ts=0 SET CHECK= IF "%pwd%" == "" ( set pwd=%~dp0 ) IF "%out%" == "" ( set out=%~dp0\BDAV ) IF "%ltmp%" == "" ( set ltmp=%~dp0\TEMP ) echo. echo ----------------------------------------------------------------- echo 入力元:%pwd% echo 出力先:%out% echo. 中 間:%ltmp% echo ----------------------------------------------------------------- echo. FOR %%i in ( "%pwd%\*.ts" ) do ( echo "%%~nxi" set /a cnt_ts+=1 ) echo. echo %cnt_ts%個のファイルがあります。 echo 処理してよろしいですか? set /p CHECK="[Y,N,1-5]? %CHECK%" IF /i %CHECK% == Y GOTO TS2PTS IF /i %CHECK% == y GOTO TS2PTS IF /i %CHECK% == 1 GOTO TS2PTS IF /i %CHECK% == 2 GOTO CHOTBDAV IF /i %CHECK% == 3 GOTO RPLSCONV IF /i %CHECK% == 4 GOTO RPLSCOPY IF /i %CHECK% == 5 GOTO STREAM GOTO END :TS2PTS REM 生TSからBD用M2TSを作成する echo. IF NOT EXIST "%ltmp%" mkdir "%ltmp%" set cnt_ts=0 FOR %%i in ( "%pwd%\*.ts" ) do ( set pic_ts= set /a cnt_ts+=1 set /a pic_ts=cnt_ts+100000 set num_ts=!pic_ts:~1,5! ts2pts.exe -i "%%i" -o "%ltmp%\!num_ts!.m2ts" -b ) :CHOTBDAV REM M2TSからBDAV用各種ファイルを作成する echo. FOR %%i in ( "%ltmp%\*.m2ts" ) do ( chotBDAV.exe "%%i" "%out%" ) :RPLSCONV REM プレイリストをSONY用にコンバートする echo. FOR %%i in ( "%out%\PLAYLIST\*.rpls" ) do ( rplsconv.exe "%%i" -m ) :RPLSCOPY REM BDAV用プレイリストにTSから取得した情報を付与する echo. FOR %%i in ( "%out%\PLAYLIST\*.rpls" ) do ( rplscopy.exe "%ltmp%\%%~ni.m2ts" "%%i" -nbieg ) :STREAM REM M2TSファイルをBDAV用のディレクトリに移動する echo. IF NOT EXIST "%out%\STREAM" mkdir "%out%\STREAM" move "%ltmp%\*.m2ts" "%out%\STREAM\" rmdir "%ltmp%" 2>NUL :END endlocal
こんなに FOR ループを回す必要はないのだが、 1 ファイルずつではなく 1 段階ずつ順番に進めたかったためあえてこうしている。 M2TS のファイル名は 00001.m2ts から順に自動採番で振るようにしているが特にソートとかしているわけではないため、最初の TS ファイルを読み込む順番には注意。
また、最初に入力待ちをする。通常の Y/N の他、数字キーで該当箇所に処理を飛ばせる。デバッグ用。