Mea*_*aty 2 pygame mixer python-2.7 windows-10
我正在尝试在 tkinter 中制作一个应用程序,它有许多按钮,您可以在上面分配声音并稍后播放。按钮的点击本身只调用 play() 方法,所以声音的加载是预先完成的。
我尝试使用滑块 (tk.Scale) 进行某种音量控制,我注意到大多数音量值之间没有明显差异,直到我非常接近于零(考虑到滑块分辨率为 0.01,从 0.0 到 0.1)。在 0.02 左右,我想我注意到音量显着降低,如果我调到零,声音就会静音。请注意,如果我在没有声音播放的情况下移动滑块,就会发生这种情况。
有趣的是,如果我尝试播放足够长的声音以让我在播放时移动滑块,我可以立即注意到差异,但是如果声音停止播放并且我再次尝试播放它,它会转到再次“默认”音量。
由于我根据它们的作用(录制声音、播放声音、GUI)将我的应用程序分成多个脚本,我认为可能是我没有直接初始化 pygame 混音器,而是从导入的模块中初始化的问题,所以我做了一个新的python脚本并在以下位置键入此代码:
import pygame
import time
pygame.mixer.pre_init(frequency=44100, size=-16, channels=1, buffer=512)
pygame.mixer.init()
sound1=pygame.mixer.Sound("sound.wav")
sound1.set_volume(1.0)
print sound1.get_volume()
sound1.play()
time.sleep(sound1.get_length())
sound1.set_volume(0.5)
print sound1.get_volume()
sound1.play()
time.sleep(sound1.get_length())
sound1.set_volume(0.08)
print sound1.get_volume()
sound1.play()
time.sleep(sound1.get_length())
Run Code Online (Sandbox Code Playgroud)
输出如下:1.0,0.5,0.078125(一个低于另一个)确认音量确实已设置(我希望正确)。
我唯一能注意到差异的是第三种情况,实际上并不是那么明显,我希望音量增加是线性的,这远非如此。
我用频道尝试了同样的事情:
sound1=pygame.mixer.Sound("sound.wav")
channel=pygame.mixer.find_channel(True)
channel.set_volume(1.0)
channel.play(sound1)
time.sleep(sound1.get_length()/2)
channel.set_volume(0.5)
print "Volume set"
time.sleep(sound1.get_length()/2)
Run Code Online (Sandbox Code Playgroud)
不走运,同样的事情也发生在这里。
我花了一整天的时间在谷歌上搜索“pygame 混合器音量问题”“pygame 混合器音量设置问题”和类似的短语,但没有运气。希望这里有人可以提供帮助,考虑到我的文凭取决于 python 方法。:)
提前致谢。
我找到了答案(感谢来自 PyGame IRC 的 Gummbum)。
问题不在于 Python 或 Pygame 本身,而在于 Windows。似乎声音增强在某种程度上摆弄了我的脚本播放的声音(或任何其他 Pygame 脚本)。
我在 Windows 10 上,这就是我的做法:
右键单击任务栏中的扬声器图标
选择播放设备
就是这样。
归档时间: |
|
查看次数: |
17763 次 |
最近记录: |