Как воспроизвести музыкальный поток Spotify

Прежде всего, я новичок в аудиопрограммировании, так что терпите меня.

Я пытаюсь воспроизвести музыку Spotify с помощью NAudio или BASS.Net или любой другой аудио-библиотеки .net.

Насколько мне известно, libspotify доставляет музыку в виде необработанных данных PCM. какова частота дискретизации потока Spotify (libspotify)?

Из документации spotify: Образцы доставляются в виде целых чисел, см. Sp_audioformat. Один кадр состоит из того же количества выборок, что и каналов. Т.е. чередование происходит на уровне выборки.

Когда я пытаюсь воспроизвести песню, Spotify выполняет обратный вызов с буфером 8192 байта.

каналы = 2

sample_rate = 44100

num_frames = 2048

Мне нужна небольшая помощь в переводе этой информации на термины NAudio.

Я также пробовал использовать образец Spotify to Bass.Net (BASSPlayer.cs). Но я еще не слышал ни одной ноты из своих динамиков. Я попытался воспроизвести mp3-песню с помощью NAudio и Bass.NET, и это работает нормально, поэтому громкость динамика в порядке. https://github.com/Alxandr/SpotiFire/blob/master/SpotiFire.Server/BASSPlayer.cs


person Søren Randrup    schedule 12.07.2012    source источник


Ответы (1)


В 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();
}
person Søren Randrup    schedule 12.07.2012
comment
Я знаю, что это старый пост. Но что такое PcmFile? - person Luis Lavieri; 04.01.2015