libspotify を使用して音楽を取得し、オーディオ ライブラリで再生しています。Spotify の音楽は、生の 16 ビット、44100hz、ステレオ LPCM である必要があります。NAudio で音楽を再生しようとしてきましたが、残念ながらステレオではありません。
Spotify ドキュメントから: サンプルは整数として配信されます。sp_audioformat を参照してください。1 フレームは、チャネルと同じ数のサンプルで構成されます。つまり、インターリーブはサンプル レベルです。
次のコードは、ファイルからモノラルで曲を再生します。ファイルは、Spotify の音楽データのコピーです。
誰かが私をステレオ ソリューションに導くことができますか? できれば、.NET の任意のオーディオ ライブラリにすることができます。
using (var waveOutDevice = new WaveOut())
{
using (var pcmStream = new FileStream(PcmFile, FileMode.Open))
{
WaveStream waveStream = null;
try
{
const int sampleRate = 44100;
const int channels = 2;
var waveFormat = WaveFormat.CreateCustomFormat(WaveFormatEncoding.Pcm, sampleRate * channels, 1, sampleRate*2*channels, channels, 16);
waveStream = new RawSourceWaveStream(pcmStream, waveFormat);
waveOutDevice.Init(waveStream);
waveOutDevice.Play();
Thread.Sleep(5000); //Listen to 5 secs of music
}
finally
{
waveOutDevice.Stop();
if (waveStream != null) waveStream.Close();
}
}
}
CreateCustomFormat の署名は public static NAudio.Wave.WaveFormat CreateCustomFormat(NAudio.Wave.WaveFormatEncoding tag, int sampleRate, int channels, int averageBytesPerSecond, int blockAlign, int bitsPerSample) です。