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