spotify - 如何播放 Spotify 音乐流

标签 spotify naudio bass.dll

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

我正在尝试使用 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/

相关文章:

java - 从 Android 上的 Spotify 获取用户数据

java - Spotify api 获取访问 token /代码

.net - 如何在.net中实现多声道音频预混器

python - Spotify Python API 调用超时问题

python - 如何在 Python Spotify API 中更改用户?

c# - C#:NAudio-空路径名不合法

C# NAudio 获取音频文件持续时间/性能

c# - NAudio - 从指定位置搜索和导航播放

java - 加载 .so 库时出现问题

Delphi:BASS.dll - 如何将 MP3 流的一部分复制到另一个文件