2012-07-12 8 views
2

우선, 나는 오디오 프로그래밍에 익숙하지 않으므로 나와 함께 참아 라.spotify 음악 스트림을 재생하는 방법

NAudio 또는 BASS.Net 또는 기타 .net 오디오 라이브러리로 음악을 확인하려고합니다.

내가 아는 한 libspotify는 원시 PCM 데이터로 음악을 전달합니다. what is the sample rate of spotify stream (libspotify)?

spotify 문서에서 : 샘플은 정수로 전달됩니다 (sp_audioformat 참조). 하나의 프레임은 채널과 동일한 수의 샘플로 구성됩니다. 나는. 인터리빙은 샘플 레벨에 있습니다.

내가 노래를 재생하려고, 스포티 파이는 8192 바이트 버퍼로 콜백을 만드는

채널 = 2

SAMPLE_RATE = 44100

num_frames =

2048 좀 필요 이 정보를 NAudio 용어로 번역하는 데 도움이됩니다.

또한 Bass.Net 샘플 (BASSPlayer.cs)에 spotify를 시도했습니다. 그러나 나는 아직 내 연사로부터 한 마디도 듣지 못했다. NAudio와 Bass.NET으로 mp3 노래를 재생하려했는데 정상적으로 작동하므로 스피커 음량이 좋아집니다. 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은 무엇입니까? –