2013-07-01 57 views
0

這是我下載的libspotify的版本:libspotify-12.1.51-win32-release。有一個名爲「spshell」的示例。 當我測試音軌播放和sp_session_player_play(g_session,1)被調用時,我聽不到任何聲音。如何使用libspotify api?

另一個問題,notify_main_thread和sp_session_process_events之間的關係是什麼。當sp_session_process_events(sp_session * session,int * next_timeout)被調用時,實際上已經完成了什麼,第二個參數的作用是什麼。

回答

2

我不相信spshell演示流音樂。

sp_session_player_play指示libspotify開始向您提供音頻數據。它不會爲你玩。你必須提供一個music_delivery回調接收音頻數據,然後你必須安排自己玩。看看點唱機的例子。

當libspotify需要在主線程上調用sp_session_process_events時,會調用notify_main_thread。您的回調應執行任何必要的通知來喚醒主線程,然後不等待就返回。您不能從回調中調用sp_session_process_events,否則會導致程序死鎖。

當調用sp_session_process_events時,libspotify將執行必須在主線程上執行的處理,例如更新用戶可見數據結構。 second parameter是一個輸出參數。當sp_session_process_events返回時,指向的值是以毫秒爲單位的時間,直到您下一次需要調用sp_session_process_events。因此,您可能需要調用sp_session_process_events的兩個原因:在超時後,或者notify_main_thread已被調用。