1

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

サウンドファイルをロードして再生し、希望の間隔の開始を求めることができますが、指定されたポイントで再生を停止する方法を知りたいですか?

4

2 に答える 2

1

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

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

このアプローチは機能しているようです。現在の時刻を手動でポーリングして再生を停止するのではなく、ピグレットクロックスケジューラを使用して、指定された間隔の後に停止コールバックを1回実行します。これは私のユースケースには十分正確です;-)

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()
于 2009-12-30T20:32:38.397 に答える