2013-12-16 22 views
0

我正试图在Android上集成libspotify。它看起来像我从android获得的原始PCM数据不同于我在ubuntu上获得的原始PCM数据。Android上的LibSpotify功能是否为PCM提供了与Linux不同的格式

出于测试目的,我尝试存储PCM文件并使用大胆进行播放。在Ubuntu中它是完美的,但在Android中,这个游戏起伏不定,速度很慢。

我试图打印数据的第一个10 int16_t,它看起来完全不同:

的Android - -457 463 62 635 492 742 968 246 909 179

Ubuntu - 在-944 960 128 1318 1020 1538 2008 510 1885 353

粗略分析显示每个int16_t值比我在Android中获得的多2.7倍。

我的问题是如何获得我在Android中获得的同样的PCM数据。

回答

1

你永远不能保证相同的PCM数据,特别是跨平台。

  • libspotify可能使用不同的比特率设置。有时候,如果它具有高质量的缓存版本,即使比特率设置较低,它也可能会使用该版本。

  • 由于性能原因,libspotify在不同平台上使用不同的解码器。

  • libspotify可能会对音频执行标准化,并且出于性能原因,标准化仅在某些平台上可用。

如果您需要在会话确切PCM匹配,libspotify是不是你的解决方案 - 它的设计为消费者音乐服务,而不是一个专业的音频提供商。

+0

感谢您的回应,就比特率和格式而言,Spotify表示它使用16位LPCM LE,并且在两个通道44100的平台上都接收相同的比特率。我需要找到一种方法来获得正确的PCM,没有任何波动或缓慢的步调。 – Karthik

+0

我的意思是源材料的比特率 - 请参阅sp_session_preferred_bitrate()。此外,libspotify不会提供“波涛汹涌”或“缓慢”的PCM数据 - 一旦下载足够的歌曲开始播放歌曲,数据传输将开始,您获得的数据将完全形成。如果你的声音波涛汹涌,你的问题就在别处 - 请检查你的声卡驱动代码。 – iKenndac

相关问题