0

wav ファイルを再生する単純な c# コンソール アプリがあります。アプリの C# でサウンド カードの設定を 24bit/48Khz に変更したいと考えています。プログラムでそれを行うにはどうすればよいですか?

    static void Main(string[] args)
    {
        SoundPlayer simpleSound = new SoundPlayer(MyProg.Properties.Resources.BOOTLOAD48000);
        simpleSound.Play();

     }
4

3 に答える 3

1

サンプル レート、ビット深度、チャンネルなどは、wav ファイルのヘッダーに埋め込まれています。

リサンプリングする簡単な方法は、サードパーティの SA NAudio を使用することです。より詳細な回答を見つけるには、stackoverflow を検索してください。

于 2012-11-15T22:45:55.813 に答える
1

オーディオ再生サブシステムは、思ったほど簡単ではありません。少なくとも、再生はサウンド カードに直接送られることはありません。 データは、他のアプリケーションからのオーディオ (存在する場合) とバックグラウンドで混合され、デバイスに転送されるように、居心地の良い場所のどこかにキューに入れられます。

ハードウェア上で少し正確にする必要がある、または必要とする理由はまったくわかりませんが、それが本当に必要な場合は、低レベルの排他的アクセス API を活用して、オーディオ レンダリング ハードウェアと密接に接続し、配信する必要があります。途中で通常行われるミキシングをバイパスして、データを再生バッファに直接転送します。ほとんどの場合、これらの API はネイティブであり、ファイルからデータを取得した後、生データを配信する必要があります。ほど簡単ではありませんSoundPlayer.Play

ただし、良いニュースは、ハードウェアがこのフォーマットを実際に再生できる場合は、前述のことを実行できる可能性が高いということです。

于 2012-11-15T23:57:49.203 に答える
0

Windows に特定のサンプル レートを使用させるには、排他モードで WASAPI を使用する必要があります。そうしないと、サウンドカードを他のアプリケーションと共有することになり、別のサンプル レートが必要になる場合があります。NAudio を使用すると、これを行うことができます。AudioClientShareMode.Exclusiveのコンストラクタに渡す必要がありますWasapiOut

WASAPI は Windows Vista 以降でのみ使用できることに注意してください。

于 2012-11-16T10:42:41.257 に答える