2012-07-12 3 views
2

Прежде всего, я новичок в аудио-программировании, поэтому несите меня.Как играть в потоковый музыкальный поток

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

Насколько я знаю, libspotify поставляет музыку как необработанные данные PCM. what is the sample rate of spotify stream (libspotify)?

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

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

каналы = 2

sample_rate = 44100

num_frames = 2048

Мне нужно немного помогите перевести эту информацию на термины NAudio.

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

ответ

2

Прорыв с NAudio. Это то, с чем я столкнулся, используя метод проб и ошибок. Я не уверен, если это правильный путь для расчета параметров из SAMPLERATE/каналов ...

Но песня играет :-)

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(); 
} 
+1

Я знаю, что это старый пост. Но что такое PcmFile? –

Смежные вопросы