如何播放 Spotify 音乐流

2024-06-27

首先,我是音频节目的新手,所以请耐心等待。

我正在尝试使用 NAudio 或 BASS.Net 或任何其他 .net 音频库播放 Spotify 音乐。

据我所知,libspotify 将音乐作为原始 PCM 数据提供。Spotify 流 (libspotify) 的采样率是多少? https://stackoverflow.com/questions/10760949/what-is-the-sample-rate-of-spotify-stream-libspotify

来自 Spotify 文档: 样本以整数形式提供,请参阅 sp_audioformat。一帧由与通道数相同数量的样本组成。 IE。交错是在样本级别上进行的。

当我尝试播放歌曲时,Spotify 使用 8192 字节缓冲区进行回调

通道 = 2

采样率 = 44100

帧数 = 2048

我需要一些帮助将此信息翻译为 NAudio 术语。

我还尝试过使用 Spotify 到 Bass.Net 示例 (BASSPlayer.cs)。但我还没有听到扬声器发出任何声音。 我尝试使用 NAudio 和 Bass.NET 播放 mp3 歌曲,效果很好,因此扬声器音量也不错。https://github.com/Alxandr/SpotiFire/blob/master/SpotiFire.Server/BASSPlayer.cs 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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何播放 Spotify 音乐流 的相关文章

  • 如何在 C# 中读取 .wav 文件的比特率

    鉴于我有一个 wav 文件 在 C 中读取其比特率属性的最佳方法是什么 我尝试过Shell 并提出了一个问题 比特率 属性是否固定在索引 28 中 没有答案所以 另外 我现在相信 Shell 不是读取音频文件属性的最佳方法 我研究了不同的开
  • Spotify 的重定向 URI 无效

    我正在尝试让 Spotify API 与 AngularJS 一起使用 我在授权阶段收到无效的重定向 URI 错误 https developer spotify com web api authorization guide 我已将red
  • 如何将 2 个 wav 文件混合在一起?

    我正在尝试录制输入并将其与歌曲合并在一起 不是连接 我有一把在听歌曲时录制的吉他 我想将吉他放在歌曲中 如 audcaity 有什么办法可以做到吗 如果无法进行实时混音 是否可以在录制后合并它们 就像我录制吉他后 现在它是一个 wav 文件
  • NAudio fft 结果给出所有频率的强度 C#

    我有 NAudio 的 wasapi 环回记录和数据 FFT 的工作实现 我得到的大部分数据都是正常的 但每隔一段时间 10 秒到几分钟的时间间隔 它就会显示几乎所有频率上的幅度 基本上 图片从右到左滚动 时间和频率从底部的最低频率开始按对
  • Echonest API 迁移问题

    我当前使用 Echonest API 在 ID 空间之间进行转换 MusicBrainz gt SeatGeek 随着 Spotify API 即将迁移 我想知道 Project Rosetta 是否会有任何端点 这是我的应用程序的一个非常
  • Spotify 自动播放列表管理与 PHP 后端和速率限制

    两个问题 问题1 我们需要从我们的后端 PHP 管理 Spotify 用户的 4 个播放列表 无需用户登录 我们网站的访问者可以向我们的网站提交多首他们喜欢的歌曲 在此基础上 我们创建并管理 4 个播放列表 其中包含 提交最多的歌曲 我们希
  • 如何在Python(Windows)中获取Spotify当前正在播放的歌曲?

    我想在 16x2 LCD 上显示 Spotify 中当前播放的歌曲 我正在考虑将 LCD 与我的 Arduino 连接起来 然后制作一个 Python 脚本 将 Spotify 当前播放的歌曲发送到 Arduino 言归正传 我正在寻找一种
  • 如何在不打开网络浏览器的情况下在spotipy中进行身份验证?

    我尝试了标准方法 主页上有描述 但我需要在没有网络浏览器的情况下登录 我怎样才能做到这一点 您可以使用 Spotify 的 python 库之一 例如 https github com plamere spotipy https githu
  • 授权和 Web API 调用结束后如何从 Spotify 注销用户

    我使用 Spotify Web API 来获取播放列表和用户曲目列表 授权工作正常 我也确实得到了曲目详细信息 但之后我想从 Spotify 注销用户并允许新登录 用户自动从 Spotify 帐户注销之前有一个会话时间 但用户可能没有耐心等
  • Spotify 最新更新:Autohotkeys 脚本损坏

    我曾经使用 AutoHotKey 脚本作为 Spotify 快捷方式 内置快捷方式有限 只有在应用程序处于焦点状态时才有效 我通常在工作时将其保留在后台 不管怎样 它之前已经更新了一百万次了 没有任何问题 但是我下载了最新的 Spotify
  • 重新采样环回捕获

    我使用以下代码成功从 Wasapi 捕获声音 IWaveIn waveIn new WasapiLoopbackCapture waveIn DataAvailable OnDataReceivedFromWaveOut 我现在需要做的是将
  • Docker Maven Spotify 插件 - 可以切换到非安全注册表

    我正在使用Spotify Maven 插件 http mvnrepository com artifact com spotify docker maven plugin在执行某些 Maven 目标时自动构建和部署 docker 镜像 但是
  • Spotify 应用程序请求授权

    我正在尝试使用以下代码从 Spotify 获取 访问令牌 var encoded btoa client id client secret function myOnClick console log clikced ajax url ht
  • Windows Azure /Windows Server 2008 R2 中的 NAudio

    我在用NAudio http naudio codeplex com 将几个 mp3 文件合并在一起以形成 Windows Azure 产品 它在开发环境中工作正常 但一旦我将其上传到 Azure 我就会收到 无驱动器调用 acmForma
  • Spotify API:有没有办法确定歌曲何时播放完毕?

    我正在尝试构建一个应用程序 利用 Spotify 的 API 来构建播放列表 我想知道是否有办法确定歌曲何时完成播放 我检查了他们的 API 似乎找不到任何可以 ping 或设置完成后回调的内容 我看过这个问题 如何判断歌曲是否已结束或使用
  • 将 WAV 文件转换为频谱图

    嗨 我对这件事很陌生 所以请耐心等待 我正在尝试将 WAV 文件转换为频谱图 但不确定如何开始 我读到一些内容 说要读取 PCM 数据 我认为是我的 WAV 文件 并将其存储在 WavReader 类的数组中 然后再对其应用 FFT 并将其
  • 获取 Spotify 当前播放的曲目

    编辑 让我们尝试澄清这一切 我正在编写一个 python 脚本 我希望它告诉我 Spotify 当前正在播放的歌曲 我尝试寻找可以帮助我的库 但没有找到任何仍在维护和工作的库 我还浏览了 Spotify 的 Web API 但它没有提供任何
  • NAudio 音调变换

    我正在使用 NAudio DLL 并且正在寻找音调变换声音的示例代码 有一个使用的例子NAudio https github com naudio NAudio用于开源中的音高变换Skype 变声器 https github com mar
  • 流式音频播放延迟(约 200 毫秒)

    我有一个播放流式音频数据的应用程序 如聊天客户端 该工作流程涉及三个简单步骤 首先发送文件头信息 采样率 每个样本的位数和通道数 音频波形输出设备根据上述参数进行初始化 音频 pcm 数据被发送并在上述设备上播放 数据接收代码是本机的 C
  • 从 WasapiLoopbackCapture 捕获音频,并转换为 muLaw

    我正在使用 WasapiLoopbackCapture 捕获音频 format IeeeFloat SampleRate 48000 BitsPerSample 32 我需要将其转换为 muLaw 8Khz 8 位 单声道 最终它将通过 S

随机推荐

  • 如何在 pandas 数据框中移动日期(添加 x 个月)?

    我有一个包含日期列的数据框 我知道如何将日期移动固定的月份数 例如 向 x 列中的所有日期添加 3 个月 但是 我无法弄清楚如何将日期移动几个月 这不是固定的 而是数据框的另一列 有任何想法吗 我在下面复制了一个最小的例子 我得到的错误是
  • 如何在shell脚本中运行R代码?

    我有一个 R 文件 myfile R 我想使用 shell 脚本来运行它 我怎样才能做到这一点 我试过这个 bin bash Rscript myfile R 但它给了我这个错误 Rscript 找不到命令 我也尝试过这个 bin bash
  • 如何检查窗口在用户屏幕上是否完全可见?

    有没有办法检查 WinForm 在屏幕上完全可见 例如是否超出屏幕范围 我已经尝试使用 SystemInformation VirtualScreen 来实现此目的 只要虚拟屏幕是一个矩形 它就可以很好地工作 但是一旦它不是 例如 L 形的
  • Racket:识别尾递归?

    我在球拍中编写了两个不同的函数来确定数字列表是否升序 define ascending list if lt length list 1 t and lt car list car cdr list ascending cdr list d
  • R 中整数向量的大小

    我原以为 R 有一个用于存储对象的标准开销 看起来是 24 字节 至少对于整数向量而言 但一个简单的测试表明它比我意识到的要复杂 例如 采用长度为 100 的整数向量 使用随机采样 希望避免任何可能存在的偷偷摸摸的序列压缩技巧 https
  • 条件格式化VBA多个条件

    我对 VBA 世界非常陌生 需要一些关于条件格式的 VBA 方面的帮助 1 我需要将条件格式应用于列 M 7岁以下绿色 黄色从7 20 红色大于20 最重要的条件是 如果列 N 声明 NOPO 则我不希望应用条件格式 我已经制定了一个公式来
  • 使用 atoi() 对整数进行输入验证

    include stdafx h include
  • 如何使用正则表达式选择字符串中每个单词的第一个字母

    我试图使用正则表达式选择字符串中每个单词的第一个字母 但遇到了问题 我能够使用选择第一个单词的第一个字母 w igm 我如何修改它以选择字符串中每个单词的第一个字母 举个例子 我有字符串 我喜欢狗 我想要代码选择 I L 和 D Use a
  • 如何使用具有三种布局的视图翻转器?

    我目前正在使用ViewFlipper我的主要活动有两种不同的布局 我想使用第三种布局 但我只能找到showNext and showPrevious 命令 有人可以告诉我如何使用来实现第三种布局吗ViewFlipper 为您制作了一个示例
  • 如何在不使用 DESCRIBE 命令的情况下描述 Oracle 中的表?

    我在上一门课时遇到了困难 我们需要编写一个 Oracle 脚本 其作用就像 DESCRIBE 命令一样 我们正在使用的这本书对如何使用数据字典的描述非常糟糕 不是寻找答案 而是寻找正确的方向 您正在寻找USER TAB COLUMNS ht
  • UNIX 域 STREAM 和 DATAGRAM 套接字之间的区别?

    这个问题是NOTSTREAM 类型和 DATAGRAM 类型 INTERNET 套接字之间的区别 我知道 STREAM 套接字使用 TCP 数据报套接字使用 UDP 以及所有 TCP UDP 内容 按顺序到达的数据包 ACK NACK 等
  • Gradle 中 buildscript 块的用途

    我是 Gradle 新手 我正在阅读文档 但我不明白其中的某些部分 这些部件之一与buildscript堵塞 它的目的是什么 如果您的构建脚本需要使用外部库 您可以将它们添加到构建脚本本身的脚本类路径中 您可以使用 buildscript
  • 防止 QGraphicsItem 移出 QGraphicsScene

    我有一个场景 其固定尺寸从 0 0 到 481 270 scene gt setSceneRect 0 0 481 270 在里面 我有一个习惯GraphicsItem多亏了旗帜我可以移动它ItemisMovable 但我希望它留在场景中
  • Hive 错误:parseException 缺少 EOF

    我不确定我在这里做错了什么 hive gt CREATE TABLE default testtbl int1 INT string1 STRING stored as orc tblproperties orc compress NONE
  • JNA - EnumProcessModules() 未返回所有 DLL?

    我试图从游戏中读取坐标 当我在通过 OpenProcess 接收的 HANDLE 上使用 ReadProcessMemory 以及我在 CheatEngine 中找到的内存时 效果非常好 例如 如果我知道正在运行的进程中的浮点值是0x5AB
  • 从 xib 中提取 UI 项目?

    经过一番浏览文档后 我决定使用以下技术 使用 viewWithTag 从 loadNibNamed owner options 返回的主根视图中提取子视图 首先 我有点困惑 因为我假设 loadNibNamed owner options
  • 当点击 UITableViewCell 的子视图时引发选择事件 (didSelectRowAtIndexPath)

    我创建了一个自定义 UITableViewCell 其中包含许多子视图 在大多数情况下 我希望 UITableViewCell 的控制器来处理事件 在一种情况下 我希望子视图简单地将事件传递给父 UITableViewCell 这将导致它在
  • 使用双花​​括号初始化向量

    有人可以解释下面示例中使用双花括号和单花括号初始化之间的行为差 异吗 Code 1 vector
  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • 如何播放 Spotify 音乐流

    首先 我是音频节目的新手 所以请耐心等待 我正在尝试使用 NAudio 或 BASS Net 或任何其他 net 音频库播放 Spotify 音乐 据我所知 libspotify 将音乐作为原始 PCM 数据提供 Spotify 流 lib