Frage

Wie kann ich die Pyglet -API für Sound verwenden, um Teilmengen einer Tondatei von 1 Sekunde bis 3,5 Sekunden lang einen 6 -Sekunden -Tonclip abzuspielen?

Ich kann eine Tondatei laden und sie spielen und bis zum Beginn des gewünschten Intervalls suchen, frage mich aber, wie ich die Wiedergabe an dem angegebenen Punkt stoppen kann.

War es hilfreich?

Lösung

Es scheint nicht, dass Pyglet Unterstützung für die Festlegung einer Stoppzeit hat. Ihre Optionen sind:

  1. Umfragen Sie die aktuelle Zeit und stoppen Sie die Wiedergabe, wenn Sie Ihren gewünschten Endpunkt erreicht haben. Dies ist möglicherweise nicht genau genug für Sie.
  2. Oder verwenden Sie eine Sounddatei -Bibliothek, um den gewünschten Teil in eine temporäre Tondatei zu extrahieren, und verwenden Sie dann Pyglet, um diese Tondatei in ihrer Gesamtheit abzuspielen. Python hat integrierte Unterstützung für .wav-Dateien (das "Wave" -Modul) oder Sie können ein Befehlszeilen-Tool wie "Sox" beschleunigen.

Andere Tipps

Dieser Ansatz scheint zu funktionieren: Anstatt die aktuelle Zeit manuell zu befragen, um die Wiedergabe zu stoppen, verwenden Sie den Pyglet Clock -Scheduler, um nach einem bestimmten Intervall einen Stop -Rückruf auszuführen. Dies ist genau genug für meinen Anwendungsfall ;-)

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top