ホームページ  >  に質問  >  本文

Python - pyaudio stream.close() によりプログラムがクラッシュし、例外をキャッチできません

pyaudio を頻繁に使用してオーディオを再生したいと考えています。これはマルチスレッド モジュールではありませんが、再生に 1 つのサブスレッドのみを使用します。再生スイッチを制御するメイン スレッドには問題はありません。しかし、それを使って遊んでいると、解決できない問題に遭遇しました。

リーリー

出力は次のようになりますが、その後クラッシュします

リーリー

1. つまり、stream1.stop_stream() を呼び出した後に stream1.close() を呼び出すとプログラムがクラッシュし、子スレッドもメインスレッドも例外をキャッチしませんでした。 ! ! !
2. stop_stream() の後の close() をコメントアウトすると、短時間であれば問題ありませんが、10 分程度実行し続けるとクラッシュしなくなります。ただし、プレイを続けることはできなくなります。 pa.open() が例外をスローし続ける [エラー番号 I/O デバイスの不正な組み合わせ] -9993。プログラムを閉じて再起動すると、pa.open() が例外 (「無効なサンプル レート」、-9997) をスローします。 . 再生用 もうダメ! ! !

この問題を解決するにはどうすればよいですか?


再生ごとに pyaudio.Pyaudio() オブジェクトを再度開くメソッドを一時的に使用します。これにより、追加で約 10 ミリ秒の CPU 時間が使用されます。 20時間近く連続使用しましたが問題ありませんでした。

リーリー
我想大声告诉你我想大声告诉你2686日前1178

全員に返信(1)返信します

  • 阿神

    阿神2017-06-12 09:27:06

    これは考えられる回避策です、ゴーストは 2016 年 7 月 30 日にコメントしました

    返事
    0
  • キャンセル返事