pygame.mixer.Channel--音频通道

import pygame
import time

pygame.init()
screen = pygame.display.set_mode((200, 100))

bb=pygame.mixer.Sound('酒醉的蝴蝶.ogg')
a=pygame.mixer.get_num_channels()  #获取本机的音频通道数
ch=pygame.mixer.Channel(0)   #创建一个Channel对象
#参数:从0到pygame.mixer.get_num_channels() 的值
#Channel对象可用于精确控制Sounds的播放。一个频道只能播放一个声音

ch.play(bb,loops=0)  #在特定频道上播放Sound声音
#如果频道正在播放任何其他声音,它将被停止
#参数1:Sound对象
#loops:控制音乐播放的次数。播放(5)将使音乐播放一次,然后重复5次,总共是6次。如果循环是-1,那么音乐就会无限重复
#maxtime:在给定的毫秒数后停止播放.  默认0--表示全部播放
#fade_ms=0:将使声音以0音量开始播放,并在给定时间内逐渐升至全音量

time.sleep(30)

ch.stop()   #停止在频道上播放声音
#播放停止后,频道可用于播放新的声音



print()


clock = pygame.time.Clock()
while True:
    t = clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()

    pygame.display.update()
ch.pause()   #暂时停止播放频道
#暂时停止在频道上播放声音。它可以在之后调用 Channel.unpause() 恢复

ch.unpause()  #恢复暂停播放频道
ch.fadeout(30)  #再播放指定时间后就淡出并停止播放音乐
#参数:单位毫秒
ch.set_volume(0.3)  ##设置此声音的播放音量
#参数是从0.0到1.0的值
#set_volume(left, right)
#如果传递一个参数,则它将同时设置左右声道的音量。如果传递两个参数并且混音器处于立体声模式,则第一个参数将是左扬声器的音量,第二个参数将是右扬声器的音量。(如果第二个参数为None,则第一个参数将是两个扬声器的音量。)

a=ch.get_volume()  #获得播放频道的音量
a=ch.get_busy()  #检查通道是否处于活动状态
#如果通道正在主动混合声音,则返回true。如果通道空闲,则返回False
a=ch.get_sound()  #返回当前在此频道上播放的实际Sound对象。如果通道空闲,则返回None
ch.queue(cc)  #排队Sound对象
#声音在频道上排队时,它将在当前声音结束后立即开始播放。每个通道一次只能排队一个声音。排队的声音仅在当前播放自动结束时播放。在对Channel.stop()或的任何其他呼叫中清除它 Channel.play()
#如果在频道上没有主动播放声音,则声音将立即开始播放
a=ch.get_queue()  #返回排队的Sound对象
#如果声音已在此频道上排队,则会返回该声音。一旦排队的声音开始播放,它将不再在队列中

set_endevent(type) -> None

播放停止时让频道发送事件

如果您调用Sound.play(n)或Channel.play(sound,n),结束事件仅发送一次:声音播放“n + 1”次后

如果在声音仍然播放时调用Channel.stop()或Channel.play()调用,则会立即发布事件

type参数将是发送到队列的事件id。这可以是任何有效的事件类型,但一个好的选择是pygame.locals.USEREVENT和之间的值 pygame.locals.NUMEVENTS。如果没有给出类型参数,那么Channel将停止发送事件

get_endevent()

获取播放停止时频道发送的事件

返回每次Channel完成声音播放时要发送的事件类型。如果没有功能返回该功能 pygame.NOEVENT

原文地址:https://www.cnblogs.com/liming19680104/p/13228923.html