2011年7月20日水曜日

MPCHCを設定する(旧ブログ記事・編集)

俺のMPC-HCの設定
WMP11とVLCとMPC-HCを比較して、一番まともに使えそうなMPC-HCの設定を煮詰める
ちなみにビデオはIntel HD2000、Vista 32bitでの場合。著作権保護のあるディスクの再生は未確認

(1) mp4再生時音ずれ発生(mp4以外にもいくつか同様の症状あり)
MatroskaSplitterをインストールすれば、x264で設定したアスペクト比が反映されない気がするが、映像が遅延しなくなってハッピーになれそう…(アスペクト比に関してはMp4boxでPARを設定する)
MPCHCの内部フィルタを無効にするのも忘れずに、再生時にタスクトレーにMatroskaSplitterのアイコンが出ていればok
最近LAV Filter?だか新しいフィルタが出ているようですがどうなんでしょう。未確認。

(2) アニメをフルスクリーン(拡大)で再生すると輪郭が汚い(スケーリング時の補間方法選択)
→現在の環境では、再生→出力→EVRにチェックが好み
→フレームレートを調べたい(Ctrl+Jの機能ね)時のみ元のEVRカスタムプレゼンタに戻す
良いGPU使ってればEVRカスタムプレゼンタで補間をバイキュービックにしてもいいかも

(3) キーボードの音量ボタンはシステム全体の音量上げ下げに使用したい
→キーバインドの音量上げ下げのアプリケーションキー割り当てを解除

(4) 再生時のCPU負荷を下げる(CPU負荷さえ気にならなければffdshow(非DXVA)の方が無難)
→PowerD○Dのデコーダをインストール(Regsvr32 C○Vsd.ax・○LCVD.ax)Windows8まで?そもそもMPC-HC内蔵のデコーダでも問題ない感じ?
→外部フィルタは、Cyber○ink Video Decoder (PD○D11)、CyberL○nk Video/SP Decoder、ffdshow2つ(Audio/Video)の順に並べ、最初の2つは優先するにチェック、(PD○D11)のメディアタイプのD○D_ENCRYPTED_PACKを削除
→(追記)フィルター名をダブルクリック、DXVAにチェックする必要があるかも
追記 それぞれ、DXVAにチェック・AutoSelectにチェック、OK?
→欠点:窓を閉じずに別のファイルを再生、を行うとメモリ消費量がどんどん増える(PowerD○Dのデコーダ使用時のみ発生)。別のファイルを開くときは一度MPCHCを終了させるようにする
→ffdshowDXVAでh.264(AVC)のハードウェアデコードが使用できるがノイズが乗るように感じたので使用しない
ちなみにffdshowでもPowerD○Dでも色がおかしくなることはなかった

(5)コマ落ちのような症状、色調の勝手な調整、階調割れの解消
MPC-HCの問題ではないが、設定を変えておく。
→Intelのグラフィック設定からフィルムモード検出・スキントーン調整・適応コントラスト調整をOFFにする(Intel HD2000…H61+core i3 2100)

(6)倍速再生
外部フィルタ追加:(4)で抜き出したフォルダの中、AudioFilterの○lauts.axをRegsvr32でインストール外部フィルタに追加。うまく有効化できれば再生→フィルタ→~TimeStretchFilterでX倍速再生可能に
→64Bit環境での動作?MPC-HCのバージョンによって使えない場合もあるかも64bitOSでも32bit版MPCを使用すればOK?
別環境のWindows10 32Bitでうまく設定できなかったが、(4)のPowerD○Dのデコーダを使用しないようにしたところハードウェア支援&倍速再生できている模様。

・倍速再生用スクリプト
mp4しか倍速再生をする機会がないことから、以前書いたゴミスクリプトを手直しして作成。
mp4を再生中タイトルに".mp4"を含むウィンドウを選択、Alt+P、F、C、Enter、速度、Enterを順に入力するだけ…拡張子をvbsにすれば完成。
とりあえず1倍速・1.1倍速・1.2倍速の3パターンを作って使っている。
Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.AppActivate( ".mp4" )
WScript.Sleep 100
objWshShell.SendKeys "%P"
WScript.Sleep 100
objWshShell.SendKeys "F"
WScript.Sleep 100
objWshShell.SendKeys "C"
WScript.Sleep 100
objWshShell.SendKeys "{ENTER}"
WScript.Sleep 100
objWshShell.SendKeys "1.2"
WScript.Sleep 100
objWshShell.SendKeys "{ENTER}"
Set objWshShell = Nothing

0 件のコメント:

コメントを投稿