首先,我是音频编程新手,所以请耐心等待。
我正在尝试使用 NAudio 或 BASS.Net 或任何其他 .net 音频库播放 Spotify 音乐。
据我所知,libspotify 将音乐作为原始 PCM 数据提供。 what is the sample rate of spotify stream (libspotify)?
来自 Spotify 文档: 样本以整数形式提供,请参阅 sp_audioformat。一帧由与 channel 数相同数量的样本组成。 IE。交错是在样本级别。
当我尝试播放歌曲时,Spotify 会使用 8192 字节缓冲区进行回调
channel = 2
采样率 = 44100
帧数 = 2048
我需要一些帮助将此信息翻译为 NAudio 术语。
我还尝试过使用 Spotify 到 Bass.Net 示例 (BASSPlayer.cs)。但我还没有听到扬声器发出任何声音。 我尝试使用 NAudio 和 Bass.NET 播放 mp3 歌曲,效果很好,因此扬声器音量也不错。 https://github.com/Alxandr/SpotiFire/blob/master/SpotiFire.Server/BASSPlayer.cs
最佳答案
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();
}
关于spotify - 如何播放 Spotify 音乐流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11452236/