簡體   English   中英

使用Pyglet播放音頻文件的子集

[英]Play Subset of audio file using Pyglet

如何使用pyglet API播放聲音,以播放聲音文件的子集,例如從6秒聲音片段的1秒到3.5秒?

我可以加載聲音文件並進行播放,並且可以搜索到所需間隔的開始,但是我想知道如何在所示的點處停止播放嗎?

pyglet似乎不支持設置停止時間。 您的選擇是:

  1. 到達所需的終點時,請輪詢當前時間並停止播放。 這可能對您而言不夠精確。
  2. 或者,使用聲音文件庫將所需的部分提取到臨時聲音文件中,然后使用pyglet完整播放該聲音文件。 Python內置了對.wav文件(“ wave”模塊)的支持,或者您可以使用諸如“ sox”之類的命令行工具。

這種方法似乎有效:與其手動輪詢當前時間以停止播放,不如使用pyglet時鍾調度程序在給定間隔后運行一次stop回調。 對於我的用例來說,這足夠精確;-)

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM