0

double[] 配列を wav ファイルにエクスポートしたいと考えています。ヘッダー (RIFF、fmt など) の操作に問題があります。これにどのようにアプローチすべきか考えていますか? BitConverter を使用して double[] 配列を byte[] 配列に変換してから、NAudio の waveFileWriter を使用しますか? サンプルコードは大歓迎です!

4

2 に答える 2

1

標準に従って、WAV ファイルの必要なすべてのビットを書き込む必要があります。モノとステレオの問題、およびサンプリング レートの問題も発生します。この問題に対処する既存のソース コードを確認することを強くお勧めします (いくつかの C/C++ バージョンがありましたが、クイック検索で C# バージョンは見つかりませんでした)。ヘッダーの仕様だけに基づいてコードを記述しようとすると、ヒットまたはミスが発生します

于 2013-10-31T20:10:38.717 に答える
1

WaveFileWriter のWriteSampleメソッドを使用して、各サンプルを 1 つずつ書き込むかWriteSamples、1 ヒットで実行します。double の配列があるため、最初に少しの LINQ を使用して float 配列に変換できます。

float[] floatArray = doubleArray.Select(s => (float)s).ToArray();
writer.WriteSamples(floatArray, 0, floatArray.Length);

これにより、各サンプルが に書き込まWaveFileWriterれ、正しいビット深度 (16 ビットまたは 32 ビット IEEE float など) に変換されます。WaveFileWriter

于 2013-10-31T20:35:25.327 に答える