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をうまく処理してくれていない様子です。
良いスプリッターなんですが・・・