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時間近く連続使用しましたが問題ありませんでした。
リーリー
これは考えられる回避策です、ゴーストは 2016 年 7 月 30 日にコメントしました