2014年11月29日土曜日

アナログ放送のDVDをmp4エンコして整理してみる

ご無沙汰しております。謎の七面鳥です。

唐突にHandBrakeなるmp4エンコーダが使い勝手がよく、今更ながら気に入ったので、
色々いじっているところです。

特にコマンドラインから扱えるのがよく、今回はこれでバッチファイルなど組んでみましたので、
紹介しようと思います。

目的としては、ほぼ全自動で
①ディスクごとにフォルダを作成し、そこにディスクの内容を保存する
②DVD起動時のタイトルリストをサムネイルとして保存する(半自動)
③DVDに収録されてるトラックを1つずつmp4ファイルとして保存する

これを延々繰り返します。

必要なツールは下記のとおりです。
・HandBrake
 https://handbrake.fr/
 http://sourceforge.jp/projects/handbrake-jp/wiki/FrontPage
 上は本家、下は日本語プロジェクトのページです。
 本家ではメジャーリリースが出ていますので、こちらの方が使い勝手はいいのでは
 ないでしょうか。
 コマンドライン版(CLI)単体のほかGUI版もありますが、こちらにもコマンドライン版が
 同梱されていますので、GUI版での入手をお勧めします。

・Media Player Classic - Home Cinema
 http://sourceforge.jp/projects/sfnet_mpc-hc/
 ディスクのIFOを呼び出すのに使います。
 起動したら手動で「Alt+I」で画像を保存して終了してください。この際ファイル名は
 特に決めずそのまま保存してください。バッチ内でフォルダ・ファイル名を揃えます。
 
 ディスクのサムネイルが不要なら、起動しないようにバッチを修正して使ってください。
 ただ、番組情報等を得るのはここぐらいしかありませんので、あった方が後々整理に
 役立つと思います。 

 ちなみに、IFOの画面を自動でpngにしてくれるツールとかどこかにありませんか…。

・QuickEject
 http://www.tsware.jp/download/qejct/
 あってもなくても動作します。
 ある場合はディスク全体のエンコードが終了したらディスクを自動でイジェクトします。


上記を用意できましたら、適当にインストールします。
バッチファイルは下記をnotepadなどに貼り付けて、拡張子を.batにして保存してください。
一応ウチではDVD2MP4.batなどとしています。

@echo off
goto junbi

流れ
①最初だけプロンプトを出し、ディスクをセットする。
*diskdrv: ディスクのドライブ名 ※「:」付けない
*savedrv: 保存フォルダのドライブ ※「:」付けない
*savepath: 保存フォルダのパス ※指定したドライブ・パスの下位に年月日時分でフォルダ作成
*loop: 1周目か2周目以降かの判定。初回のみMPC-HC.exe起動前に説明文を表示するが、2周目以降はいきなり起動させる。
*makeyn: 保存フォルダが無かった場合、作成の賛否を問う

②ディスク内の\VIDEO_TS\VIDEO_TS.IFOのタイムスタンプを取得し、保存フォルダを作成する。
*vidtsifo: VIDEO_TS\VIDEO_TS.IFO
*Dcode: YYMMDD-HHMM。ディスクごとのフォルダ名・ファイル名として機能する。
*Dcodeopt: 適当。番組名を書くといいかも。無くてもいい。Dcodeの後ろに付く。

③ディスク内の\VIDEO_TS\VIDEO_TS.IFOをMPC-HCで表示→手動でAlt+Iで画像をpngで保存(最初の保存時にpngを選択)
 (保存フォルダは%savepath%になるようにする)→手動で終了。
*showIFO: MPC-HCに相当する実行ファイルのファイル名
*showIFOpath: MPC-HCに相当する実行ファイルのパス
*IFOsumext: IFOサムネイルを保存する拡張子

④VOBを順次mp4にHandBrakeで変換し、設定パス以下の保存フォルダに保存していく。
*encorder: HandBrakeに相当する実行ファイルのファイル名
*encorderpath: HandBrakeに相当する実行ファイルのパス
*encorderopt: HandBrakeに相当する実行ファイルのオプション

⑥終了、先頭に戻る。


:junbi

rem ドライブ・保存フォルダの設定
set diskdrv=Q
set savedrv=E
set savepath=DVDtoMP4
set makeyn=
set loop=
set Dcodeopt=マジカルアニメ・バングミ=メイ

rem エンコーダのexeファイル名とパスの設定
rem ファイル名は空白厳禁。パス空白はドライブルートになる。当バッチと同じフォルダに入れる場合はパスを「.」(半角ピリオド)にする。
set encorder=HandbrakeCLI.exe
set encorderpath=E:\ols\Handbrake
rem set encorderpath=.
set encorderopt=

rem ディスクリスト表示のexeファイル名とパスの設定
rem ファイル名は空白厳禁。パス空白はドライブルートになる。当バッチと同じフォルダに入れる場合はパスを「.」(半角ピリオド)にする。
set showIFO=mpc-hc.exe
set showIFOpath=E:\ols\MPC-HC
rem set showIFOpath=.
set vidtsifo=VIDEO_TS\VIDEO_TS.IFO
set IFOsumext=png

rem イジェクトツールのexeファイル名とパスの設定
rem 使う場合以外はこのままで。空白厳禁。パス空白はドライブルートになる。当バッチと同じフォルダに入れる場合はパスを「.」(半角ピリオド)にする。
set ej=QuickEject.exe
set ejpath=E:\ols\qejct
rem set ejpath=.

rem 各ツールの所在を確認
if not exist %encorderpath%\%encorder% goto err0
if not exist %showIFOpath%\%showIFO% goto err0

rem 保存先の有無確認と無い場合の作成を問う
%savedrv%:
cd \
:fldrchk
if exist %savepath% goto main
set /p makeyn="保存フォルダが見つかりませんでした。作成しますか?(y/n)"
if %makeyn% == "n" goto err1
mkdir %savepath%
goto fldrchk



rem ------------- Start of Main Routine

:main

rem ディスク挿入判定
if not exist %diskdrv%:\%vidtsifo% goto main

rem VTS_01_0.IFOからタイムスタンプを取得してフォルダを作る
for %%a in ( %diskdrv%:\%vidtsifo% ) do set fdate=%%~ta
set ftime=%fdate:~-5%
set fdate=%fdate:~0,10%

set ftime=%ftime::=%
set fdate=%fdate:/=%

set Dcode=%fdate%-%ftime%%Dcodeopt%

%savedrv%:
cd %savepath%
if not exist "%Dcode%" md %Dcode%
rem フォルダ作成に失敗したらエラーに飛ぶ
if not exist "%Dcode%" goto err2

rem IFOファイルのスクショを取得
if not "%loop%" == "" goto gThumbIFO

echo 取り込むDVDを入れてください。
echo %showIFO% を起動しますので起動後にAlt+Iで画像を %IFOsumext% 形式で保存してください。
echo 何かキーを押すと %showIFO% が起動します...
echo;
echo;
echo;
set /p null=""

:gThumbIFO
%showIFOpath%\%showIFO% %diskdrv%:\%vidtsifo%
if errorlevel 1 goto err3
move *.%IFOsumext% "%Dcode%\%Dcode%.%IFOsumext%"
set loop=1

rem HandBrakeCLI.exeでエンコード
:HB
for /L %%n in ( 1, 1, 9 ) do if exist %diskdrv%:\VIDEO_TS\VTS_0%%n_0.IFO %encorderpath%\%encorder% -i "%diskdrv%:\\" -t %%n -o "%Dcode%\%Dcode%-0%%n.mp4" -markers="%Dcode%\%Dcode%-0%%n.csv" %encorderopt%
if not exist %diskdrv%:\VIDEO_TS\VTS_10_1.VOB goto ej
for /L %%n in ( 10, 1, 99 ) do if exist %diskdrv%:\VIDEO_TS\VTS_%%n_0.IFO %encorderpath%\%encorder% -i "%diskdrv%:\\" -t %%n -o "%Dcode%\%Dcode%-%%n.mp4" -markers="%Dcode%\%Dcode%-%%n.csv" %encorderopt%

:ej
rem QuickEjectがあればドライブをイジェクト

if not exist %ejpath%\%ej% echo ディスクを入れ替えて、何かキーを押してください...
if exist %ejpath%\%ej% echo ディスクを入れ替えてください...
echo;
echo;
echo;
if not exist %ejpath%\%ej% set /p null=""
if exist %ejpath%\%ej% %ejpath%\%ej% %diskdrv%
goto main

rem ------------- End of Main Routine

rem エラーメッセージ

:err0
if not exist %encorderpath%\%encorder% echo "err0:%encorderpath% の %encorder% が見つかりませんでした。"
if not exist %showIFOpath%\%showIFO% echo "err0:%showIFOpath% の %showIFO% が見つかりませんでした。"
goto end

:err1
echo "err1:保存フォルダ %savedrv%:\%savepath% が見つからなかったため、終了します。"
goto end

:err2
echo err2:ディスクの保存フォルダ %savedrv%:\%savepath%\%Dcode% を作成できなかったため、終了します。
goto end

:err3
echo err3:%showIFO% が異常終了したため、バッチを終了します。
rem goto end
:end
pause

なお、本バッチファイルの使用に伴う損害等は負いません。
責任は使用されるご自身となります。
改変・転載などはご自由にどうぞ。

各環境に適応させるには、冒頭の環境変数を適宜書き換えてください。

1枚のエンコードに時間がかかる場合は、サムネイルを作成せずに、ISOイメージを作成して、
それをバッチで処理していく方が手間がかからないかもしれません。

また応用として、番組ごとに開始・終了時間をオプションでセットさせれば、前後のCMカットを
自動でやってくれます。
その辺りはHandBrakeの使用法を検索して見つけてください。
またオプションは、一度GUI版で最適なパラメータを見つけてから、ログファイルにあるオプションを
こちらのバッチに記載する方がいいと思います。

貴方のライブラリの整理の一助になれば幸いです。

2014年2月11日火曜日

M@STERPIECEのためにBlu-ray Audio環境を試してみたよ

謎の七面鳥です。一応Pでございます。
…非っ常にファン寄りのPですが。

さてさてアニマスの劇場版が公開されて3週間目に入りました。
関連CDも出るしSSAのライブも近いですしで、Pの皆様は予習復習に忙しいことかと。

そんな中でその関連CD、具体的には主題歌「M@STERPIECE」のシングルやサントラCDで
今回は不思議なバリエーションがありますね。

Blu-ray Audio。なんですかコレは?

その辺について少し触れていきたいと思います。


0.そもそもBlu-ray Audio ってなによ

ただの映像BDです。
なので普段BDを見ている環境で再生することができます。
メニュー画面があったり、その画面のまま音声が流れたりするので、注意書きとして
古い機種では対応できない場合がある、というのが出ますが、まぁ大概は大丈夫では
ないかと。


1.オーディオとして楽しみたいんだけど

すでにサラウンド環境を構築されている場合は、それをそのままお使いになるのが
最も早道です。AVアンプがある場合は、それをピュアオーディオ向けに設定すれば
よいかと思います。

単にプレーヤとTVを直結されている場合、またオーディオ的にご自身が納得いってない
環境の場合は、ヘッドフォンアンプ兼用もしくは単体のハイレゾDACを導入されるのが
早いかと思われます。

※これを機にBDプレーヤを本格的なピュアオーディオ環境に組み込みたい場合は、
 当エントリでは役不足ですので、ご了承ください。

※Panasonic BZT9600 http://panasonic.jp/diga/blu-ray/bzt9600/ などをお買い求めください。

で、具体的には規格上 24bit、192kHz PCM というのを手掛かりに、これに対応したDACが
あれば再生できます。ただしDolbyフォーマットにはAVアンプでないと対応していないと
思われますので、機器の設定はご注意ください。


2.具体的にどうすんよ

下記のような機器・ケーブルをご用意ください。

・BDプレーヤ
・デジタルケーブル(光/同軸)
・DAC
・アナログ音声ケーブル
・アンプ/ヘッドフォンアンプ
・スピーカーケーブル
・スピーカ

すでに一部/全部をお持ちの場合は、お使いの環境に合わせてセッティングしてください。


私は下記の構成になりました。

・BDプレーヤ         : Panasonic BZT800

・デジタル光ケーブル    : audio-technica オプティカルデジタルケーブル [ATSDP2000/1.3]

・ヘッドフォンアンプ兼DAC :

・ヘッドフォン          : audio-technica ATH-W1000

軽く解説しますと、光デジタルケーブルでピュアオーディオというのは個人的にはやや偏見が
ありましたが、石英ケーブルなら精度が高く使用に耐えうるかと思い選びました。
※BZT800の音声出力は アナログRCA/光デジタル/HDMI のみ

正直奢りすぎの印象はありますが、今回はM@STERPIECEを聞くために入手しました。
※5千~1万辺りの価格帯のまともな光ケーブルがkakaku.comに無かったというのもありますが

ラトックの24192はその名の通り24bit、192kHzに対応したUSB DAC兼ヘッドフォンアンプです。
M@STERPIECEの24bit,48kHzに対しては奢ってますし、同系列の2496でも十分なのですが
今回はこちらを選びました。
※本当は192kHz収録だと思い込んでいたが勘違いでした


3.聞いたのかよ

はい。
聞き込みが足らないのですが、それでも概ね満足できました。

最初に注意ですが、DACがAVアンプでない場合、DolbySurroundをに対応していませんので
その設定をして音声を出すと、全く別のデジタル信号がDACに行ってしまいDACなどを損傷
しかねません。最悪あなたの鼓膜が破れます。なのでDolbySurroundを選ぶ場合はよく注意して
やってください。

面白かったのは、今までBDプレーヤの音声設定がおざなり過ぎたということですね。
今回聴くにあたって、プレーヤ側の補正は全部切りました。映像を見てる分には馴染むのですが
オーディオ…というか、まず「THE IDOLM@STER」を聞いて微妙に「ん?」「一応こうだけど微妙に
違うよね」と思いながら設定をまさぐっていくと「あぁこれこれ」「こうだろう!」という手ごたえを
感じられて、あーオーディオやってるという気分に浸れますw。

THE IDOLM@STER に違和感を感じなくなるまでここで徹底的にいじりこむのが大切ですね。

プレーヤーのダウンミックス機能をオンにしておけば、Linear PCM 5.1ch も聞けます。
劇場版をご覧になったなら、M@STERPIECE が一番わかりやすいと思いますが、5.1ch の方が
劇場の印象に近く聞こえます。クラップがわかりやすいので、ライブの参考にもなるでしょうね。

ただ、ボリュームや音の厚みなどの面で専業アンプを挟みたいところですが、これは今後の
課題でしょう。

また、本格的にやるなら電源や設置環境の見直しなどが入るかと思います。
その辺はご自身で追い込んでみてください。


4.結局どうよ

DAC1個あればなんとかなるんだ、というのが感想ですかね。当然といえば当然だけど。
最近は小さくてもそこそこ安価でもコストパフォーマンスのいい機器が増えたので、場所に
困ることが少なくなったのが助かりますね。

実際24192はかなり小型なので、テレビのそばに置いておくにも適しています。
ヘッドフォン用のアンプとしてかなり高性能だと思うので、オススメします。


取り急ぎですが、こんなところで。
プロデューサーさんにもそうでない方にも参考になれば幸いです。