Windows7(WMP12)でのAC3音声の不具合

正月に録り貯めていたアニメをAVCHDフォーマットのmp4(H264+AC3)に変換したところ、Windows7のWindows Media Player(WMP12)で再生しても音が出ない。
他のプレーヤー(MPC Home Cinemaとか)だと、音が出る。
ちょっと苦戦したので、その報告を・・・

発症の状況

入力 mp4コンテナファイル(H264+AC3)
スプリッタ Haali Media Splitter(MatroskaSplitter1.13)
デコーダー ffdshow(ffdshow_rev4527_20131203_clsid)のVideo+Audio
レンダラー ノートPCのLCD + High Definition Audio デバイス
その他 Win7DSFilterTweaker_5.9にて、
「Disable Microsoft DTV-DVD Video Decoder」と
「Disable Microsoft DTV-DVD Audio Decoder」をチェック
(映像・音声のデコードをffdshowに任せるため)
訳あって、私はWMPを使っています。達人の方はGOMやVLCを使っているようですが、過去のプレイリスト(WPL)を読めるのは、私の知るところ、WMPとWinAmpだけだと思います。
WinAmpも、5.58あたりからオーバーレイが無くなったり、最近のは、余計なADが入ったりで、使わなくなりました。
で、結局WMPに戻ったわけですが、今まで、avi(DivX+MP3orAC3)でエンコード保存してそれを鑑賞して問題なかったのですが、AVCHDに変換しやすいようにコンテナをmp4にしたら、音声が再生できない現象にブチ当たりました。

原因追究・・

とにかく、「mp4コンテナのAC3コーデックの音が出ない」原因を探ります。
コンテナが、aviやmpgの場合はOKなんですよね。(コンテナがmp4でもaacコーデックならOK)
さっそく、エンコフリーク御用達の「graphedit」で調べてみることに・・(grapheditに、動画ファイルをドラッグ&ドロップ)

mpegコンテナ(mpeg2+AC3)をレンダリング
mpegコンテナの場合、問題なくレンダリングできます。
きちんと、ffdshow-video&audioコーデックが使われています。

では、問題のmp4コンテナをドラッグ&ドロップしてみると・・・

いきなりエラーが・・

案の定、音声のレンダリングが出来ていません
ここで、強引にffdshow-audioを配置して、手動でレンダリングしてみると・・

Haali Media Splitterからffdshow Audio Decoderまでは接続できました。
このあと、ffdshow Audio DecoderからDefault DirectSound Deviceまで接続しようとすると・・・

エラーが出ます・・
要は、ffdshow Audio Decoderの出力フォーマットが、Default DirectSound Deviceに直接入力できない形式という訳ですね。
ちょっと、ffdshow Audio Decoderの出力ピンのプロパティを見てみましょう。

テキストが、no-wrapで見えないので、抜き出してみます
「Major Type: Audio - Sub Type: PCMAudio - Format: WaveFormatEx: 4294949.760 KHz 32 bit stereo」
何なんですか!?このフォーマットは??。
量子化32bitはあり得るとして、サンプリング周波数が、約4.3GHz??超DSDですか?
こんなフォーマット、受け入れられるデバイスがあったら見てみたいです。

とりあえずの解決策

なにはともあれ、ffdshow Audio Decoderの出力がおかしいのなら、ffdshow Audio Decoderの設定で変えてやればいいと思います。


リサンプリングを有効にし、48KHzに設定

ffdshow Audio DecoderからDefault DirectSound Deviceへ接続できました
以上の設定で、WMP12でも問題なく再生できました。 ちなみにスプリッターをHaaliから、mp4splitterに変更すると、問題なく(ffdshowでリサンプリングしなくても)レンダリングできます。
Haali Media Splitterの出力時点で、すでに4294949.760 KHz 32 bitになっていることを考えると、Haali Media SplitterがAC3をうまく処理してくれていない様子です。
良いスプリッターなんですが・・・