2012-03-09 15 views
-1

Windowsは、Windows Vistaのオーディオアーキテクチャに大きな変更を加えたようです。私が理解しているように、いくつかの "レガシーコーデック"はVista以上には含まれていませんが、これが問題の原因かどうかはわかりません。Winmm.dllは特定のWAVサウンドを再生しませんか?

私はDelphiでプログラミングしています。現在、Windowsライブラリのwinmm.dllとそのPlaySoundメソッドを使用してwavファイルを再生しています。このdllで再生できないWAVファイルが数多くあるようです。興味深いことに、Windows Media Playerは、失敗したサウンドを再生することができますが、Windowsコントロールパネルのサウンドアプレットは、どちらのサウンドも再生できないため、サウンドを再生するために使用しているライブラリの制限である可能性があります。アプリ。しかし、これにより、悪いユーザ体験が、ファイルに何らかの欠陥があり使用できないことをユーザに通知することなく、黙って失敗するようにする。

だから、もっと大きなコーデックをサポートしているWAVサウンドを再生するために、Windows Media Playerのようにこれらの壊れたファイルを再生できる別のライブラリ関数がありますか? WAVが有効/再生可能かどうかをテストするために使用できる別の関数呼び出しがあるので、ファイルの内部形式がサポートされていないことをユーザーに通知できますか?

+1

AudacityでこれらのWavファイルを開いて、使用しているCODECを見つけようとしましたか? –

+0

Audacityを通じてCODECを特定する方法について私に指摘できますか?欠陥のあるファイル(古いバージョンのAOLインスタントメッセンジャーのサウンドファイル)をWindowsと私のアプリケーションで再生するWAVファイルに変換することができました。しかし、 "32ビット浮動小数点"がエンコーディングでない限り、コーデック –

+0

の識別方法がわかりません。ただし、同じセットの別のサウンドクリップは同じ値を持ち、正常に再生されます。 –

答えて

0

Window Media Playerは、MCIのPlaySoundよりも優れたパフォーマンスと柔軟性を提供するDirectShowを使用します。しかし、MCIと比較してDirectShowで音を鳴らすのは多大な努力のように思えます。

Carlos BarbosaのコンポーネントcbAudioPlayをご覧ください。これはDirectShowを使用する良い例であり、必要な関連ライブラリが含まれています。

関連する問題