1

メソッドを使用して、NAudioを使用してmp3をWAVに変換していWaveFormatConversionStream.CreatePcmStream()ます。

私が理解しているように、これは利用可能な ACM コーデックについて OS に問い合わせてから、いずれかを選択します。

使用する ACM を制御したり、優先度を設定したりするにはどうすればよいですか? Windows OS または NAudio にそのオプションはありますか?

現在、Windows Media Player に付属しているものを使用しているようで、他の場所で正常に再生/変換される特定の mp3 では失敗します。

基本的には、まともなコーデックを使用するように指示したいと思います。

4

1 に答える 1

1

内部ではacmFormatSuggestを呼び出して、PCM への変換方法を見つけようとします。実際には、インストールされている ACM ごとに Windows で優先度を設定できます。Windows XP でこれを取得する方法は知っていましたが、Windows 7 で同等のダイアログがどこに保持されているかわかりません。acmDriverEnumacmDriverOpenを使用して、必要な ACM ドライバーを正確に指定する方法があります。

クラスに追加のコンストラクターを使用して ACM フィルター (つまり、コーデックではなくエフェクト) にこの機能を実装してAcmStream、ドライバー ID と aWaveFilterを渡すことができるようにしました。null WaveFilter と選択した ACM のドライバー ID でこれを呼び出すことができます。AcmDriver.EnumerateAcmDriversまたはを使用したコーデックAcmDriver.FindByShortNameWaveFormatConversionStream残念ながら、自分で渡せるコンストラクターを配置していないAcmDriverので、独自の mod を作成する必要があります。

また、失敗する MP3 とエラー メッセージは何ですか? コーデックではなく、MP3 フレームの解析の問題である可能性があります。また、NAudio には別の MP3 フレーム デコーダー ( DmoMp3FrameDecompressorXP では使用できませんが、より良い結果が得られる可能性があります) があります。

于 2011-05-23T22:09:25.443 に答える