サンプルサイズを変更したり、再サンプリングしたりせずに、多くのオーディオをソース形式から PCM にトランスコードしたいと考えています。Windows Media Player でファイルを再生でき、従来の ACM コーデックを使用していない場合は、DirectSound を使用している必要があります (これは Windows XP および Windows Server 2k3 での結果です)。C# から DirectSound にアクセスすることは可能ですか? Web を検索してみましたが、すべての例は私が興味のない再生に関するものでした。
3 に答える
DirectSound はオーディオ再生 API です。つまり、DirectShowです。Windows Media Player は DirectShow を使用してオーディオ ファイルを再生します。理論的には、メディア プレーヤーが使用するのと同じ再生グラフを作成するだけで済みますが、最後にオーディオ ドライバーを .WAV ライター フィルターに置き換えます。
DirectShow グラフ オブジェクトは実際には C++ から呼び出されるように設計されているため、これは C++ コードで行う方がいくらか簡単ですが、適切な相互運用定義のセットがあれば、C# でもこれを行うことができます。
http://directshownet.sourceforge.net/には、.NET で DirectShow を使用した深刻なハッキングがありますが、それはおそらくあなたの問題にとってやり過ぎです。
まだお持ちでない場合は、 GraphEditのコピーを取得することをお勧めします。これを使用して、直接表示グラフをインタラクティブに「プロトタイプ」することができます。ファイルをgrapheditにドロップします。次に、最後のフィルターを削除し、ファイル ライター フィルターに置き換えます。
1 つの問題は、DirectShow フィルタのデフォルト セットに .WAV ファイル ライター フィルタがないことです。
ファイルを変換したいだけで、DirectShow を使ってコードを書く方法を学ぶことにはあまり関心がない場合は、Sound Forgeのコピーを入手することをお勧めします(デモ バージョンもあるかもしれません)。ほとんどのオーディオ ファイル形式を簡単にバッチ処理するために使用できるスクリプト言語 (C#、vb) があります。
こことここで音声変換に関するCodeProjectのこの記事をご覧ください。