Pygletを使用してオーディオファイルのサブセットを再生します

StackOverflow https://stackoverflow.com/questions/1977521

  •  21-09-2019
  •  | 
  •  

質問

サウンドにPyglet APIを使用して、サウンドファイルのサブセットを1秒から3.5秒の6秒のサウンドクリップまで再生するにはどうすればよいですか?

サウンドファイルをロードして再生でき、必要な間隔の開始まで捜索できますが、示されたポイントで再生を停止する方法を疑問に思っていますか?

役に立ちましたか?

解決

Pygletが停止時間の設定をサポートしているようには見えません。あなたのオプションは次のとおりです。

  1. 現在の時間を投票し、希望するエンドポイントに到達したときに再生を停止します。これはあなたにとって十分に正確ではないかもしれません。
  2. または、サウンドファイルライブラリを使用して、必要な部分を一時的なサウンドファイルに抽出し、Pygletを使用してそのサウンドファイル全体を再生します。 Pythonには、.wavファイル(「wave」モジュール)のサポートが組み込まれています。または、「sox」などのコマンドラインツールにシェルアウトできます。

他のヒント

このアプローチは機能しているようです。現在の時間を手動で投票して再生を停止するのではなく、Pyglet Clockスケジューラを使用して、特定のインターバルの後に一度ストップコールバックを実行します。これは私のユースケースにとって十分に正確です;-)

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帰属
所属していません StackOverflow
scroll top