2009-12-29 34 views
1

如何使用pyglet API播放声音文件的子集,例如从1秒到3.5秒的6秒声音片段?使用Pyglet播放音频文件的子集

我可以加载一个声音文件并播放它,并可以寻求到期望的时间间隔的开始,但我想知道如何停止播放的指示点?

回答

1

似乎没有pyglet支持设置停止时间。您的选项有:

  1. 轮询当前时间并在到达所需端点时停止播放。这对你来说可能不够精确。
  2. 或者,使用声音文件库将您想要的部分提取为临时声音文件,然后使用pyglet播放整个声音文件。 Python已经内置了对.wav文件(“wave”模块)的支持,或者你可以使用像sox这样的命令行工具。
+0

足够精确由于pyglet的错误,我结束了炮击了外部音频播放器(afplay,从OSX开发工具核心音频样本),它可以播放的片段各种格式的文件 – grrussel 2010-01-03 23:56:07

0

这种方法似乎工作:而不是手动轮询当前时间以停止播放,使用pyglet时钟调度程序在给定时间间隔后运行一次停止回调。这是我的使用情况;-)

player = None 

def stop_callback(dt): 
    if player != None: 
    player.stop() 

def play_sound_interval(mp3File, start=None, end=None): 
    sound = pyglet.resource.media(mp3File) 
    global player 
    player = pyglet.media.ManagedSoundPlayer() 
    player.queue(sound) 
    if start != None: 
    player.seek(start) 
    if end != None and start != None: 
    pyglet.clock.schedule_once(stop_callback, end-start) 
    elif end != None and start == None: 
    pyglet.clock.schedule_once(stop_callback, end) 
    player.play()