0

这是我下载的 libspotify 版本:libspotify-12.1.51-win32-release。有一个名为“spshell”的示例。当我测试曲目播放并调用 sp_session_player_play(g_session, 1) 时,我听不到任何声音。

还有一个问题,notify_main_thread和sp_session_process_events是什么关系。当调用sp_session_process_events(sp_session *session, int *next_timeout)时实际做了什么,第二个参数的作用是什么。

4

1 回答 1

2

我根本不相信 spshell 演示流音乐。

sp_session_player_play 指示 libspotify 开始为您提供音频数据。它不会为您播放。您必须为 spotify 提供一个music_delivery回调来接收音频数据,然后您必须自己安排播放。看点唱机的例子。

当 libspotify 需要在主线程上调用 sp_session_process_events 时调用 notify_main_thread。您的回调应该执行唤醒主线程所需的任何通知,然后无需等待即可返回。你不能从回调中调用 sp_session_process_events,否则你会死锁程序。

当调用 sp_session_process_events 时,libspotify 将执行它必须在主线程上执行的必要处理,例如更新用户可见的数据结构。第二个参数是输出参数。当 sp_session_process_events 返回时,指向的值是以毫秒为单位的时间,直到您下次需要调用 sp_session_process_events。因此,您可能需要调用 sp_session_process_events 有两个原因:在此超时过后,或在调用 notify_main_thread 时。

于 2013-07-01T19:40:49.380 回答