1

Windows 8 KN を使用しています (N バージョンには Media Player とそのコンポーネントが含まれていません)。

これには ACM デコーダーがインストールされていないので、LAME MP3 ACM をインストールしました。(32 ビットと 64 ビットの両方)

NAudioデモアプリで確認したところ、ありました。

しかし、MP3 を再生しようとすると (デモ アプリでも)、「AcmNotPossible calling AcmStreamOpen」でクラッシュします。

これらのバージョンの Windows 用のメディア パックをインストールせずに、NAudio でオーディオを再生することはできますか? NAudio は ACM コーデックのみに依存していますか、それともこれらの Windows コンポーネントの一部に依存していますか?

編集: Windows6.2-KB2703761-x64 (Windows 8 の N および KN バージョン用のメディア機能パック) をインストールした後、NAudio は機能します。

私の質問は、「NAudio と .NET を使用して MP3 を再生し、これをインストールする必要がない方法はありますか?」ということです。

スクリーンショット

4

1 に答える 1

1

ACM コーデックを使用するには、渡す WAVEFORMATEX がコーデックが必要とするものと正確に一致する必要があります。LAME MP3 コーデックは、Windows に付属する Fraunhofer コーデックとは異なる構造を使用している可能性があります。ACM ページを参照して、NAudioDemo アプリケーションを使用して入力と出力の波形構造を調べることができます。

MP3FileReader では、プラグ可能な MP3 フレーム デコンプレッサが使用できるため、DirectX メディア オブジェクト MP3 デコーダを使用する場合は、MP3FileReader をセットアップして、func を使用して IMp3FrameDecompressor を構築するコンストラクタで使用することができます。それが機能しない場合は、任意のコーデックを使用する独自の IMp3FrameDecompressor 関数を実装するか、完全に管理されたもの (たとえばNLayerを使用) を実装できます。最終的に、マシンにインストールされているコーデックにまったく依存したくない場合は、おそらくこれが最良のオプションです。

于 2013-10-08T16:08:38.973 に答える