如何播放spotify音乐流

时间:2012-07-12 12:50:31

标签: spotify naudio bass.dll

首先,我是音频编程的新手,所以请耐心等待。

我正在尝试使用NAudio或BASS.Net或任何其他.net音频库播放spotify音乐。

据我所知,libspotify将音乐作为原始PCM数据传递。 what is the sample rate of spotify stream (libspotify)?

来自spotify文档: 样本以整数形式传递,请参阅sp_audioformat。一帧包含与通道相同数量的样本。即交错是在样本层面。

当我尝试播放歌曲时,spotify使用8192字节缓冲区进行回调

渠道= 2

sample_rate = 44100

num_frames = 2048

我需要一些帮助将这些信息翻译成NAudio术语。

我还尝试过将Spotify发送到Bass.Net示例(BASSPlayer.cs)。但我还没有听到我的发言者发过一张便条。 我曾尝试用NAudio和Bass.NET播放一首mp3歌曲,这个工作正常,所以扬声器音量还可以。 https://github.com/Alxandr/SpotiFire/blob/master/SpotiFire.Server/BASSPlayer.cs

1 个答案:

答案 0 :(得分:2)

NAudio有突破。这是我想出来的,通过使用试错法。我不确定这是否是从sampleRate / channels计算参数的正确方法...

但这首歌正在播放: - )

IWavePlayer waveOutDevice = new WaveOut();

using (var pcmStream = new FileStream(PcmFile, FileMode.Open))
{
    const int songDuration = 264000;
    const int sampleRate = 44100;
    const int channels = 2;
    var waveFormat = WaveFormat.CreateCustomFormat(WaveFormatEncoding.Pcm, sampleRate * channels, 1, sampleRate * 2 * channels, channels, 16);
    var waveStream = new RawSourceWaveStream(pcmStream, waveFormat);

    waveOutDevice.Init(waveStream);
    waveOutDevice.Play();
    Thread.Sleep(songDuration);
    waveOutDevice.Stop();
    waveStream.Close();
    waveOutDevice.Dispose();
}