2011-08-04 102 views
4

我正在構建一個無線電自動化程序,但是我無法弄清楚如何讓定時器倒數剩餘的秒數。我目前正在使用Pygame,並不想爲此加載另一個工具包。到目前爲止,我可以做一個定時器計數使用此:用Pygame找到一首歌的長度

import pygame 

#setup music 
track = "Music/Track02.wav" 
pygame.mixer.music.load(track) 
pygame.mixer.music.play() 
print("Playing Music") 
while(pygame.mixer.music.get_busy()): 
    print "\r"+str(pygame.mixer.music.get_pos()), 

但我不知道如何讓這首歌和倒計時的總長度,而不必已播放的歌曲。

+0

這是與python2.7的Linux是否有幫助? – JRJurman

+0

'mixer.music.get_pos'好像又回到了總播放時間混頻器 - 即它不會重置每次播放的聲音。你如何使用它來顯示每個曲目的進度? –

回答

1

檢查Documentation。根據該網站,該功能以秒爲單位返回聲音對象的長度。所以,剩下的時間很簡單(pygame.mixer.music.get_length() - pygame.mixer.music.get_pos()) - 1

這樣,它顯示爲一個負數,就像大多數剩餘計數器所做的時間一樣音樂播放器。請注意,我在這臺電腦上沒有pygame,所以我無法測試它。所以,檢查它只是爲了確保。

+0

.get_length僅適用於pygame聲音,而不是pygame.mixer.music – JRJurman

+0

對,對不起,我錯過了。通過檢查文檔,看起來不起作用的原因是因爲它將音樂對象流式傳輸,而不是將它們全部加載到內存中。很像某些MP3播放器在歌曲完全加載之前不會顯示歌曲長度,只有歌曲從未完全加載,因爲pygame不會像這樣緩衝。任何原因您不能使用Sound對象? – Jonathanb

+0

剛剛想到我應該使用音樂對象而不是聲音對象...雖然,我想我可以加載歌曲爲了獲得長度... ... – JRJurman

5

您也可以將歌曲作爲正常聲音加載,並在使用mixer.music進行播放時檢查長度。

a = pygame.mixer.Sound("test.wav") 
print("length",a.get_length())