>  Q&A  >  본문

python - pyaudio stream.close()로 인해 프로그램이 충돌하고 예외를 포착할 수 없습니다.

오디오를 재생하기 위해 paudio를 자주 사용하고 싶습니다. 멀티 스레드 모듈은 아니지만 재생 스위치를 제어하는 ​​메인 스레드에는 문제가 없을 것입니다. 그런데 플레이에 사용해보니 해결이 안되는 문제에 부딪혔습니다.

으아악

출력은 다음과 같더니 충돌이 발생합니다

으아악

1. 즉, stream1.stop_stream()을 호출한 후 stream1.close()를 호출하면 프로그램이 중단되고 하위 스레드나 메인 스레드 모두 예외를 포착하지 못했습니다. ! ! !
2. stop_stream() 이후에 close()를 주석 처리하면 잠시 동안 문제가 없지만 약 10분 동안 계속 실행되면 충돌이 발생하지 않지만 더 이상 작동하지 않습니다. 계속 플레이하려면 pa.open()에서 계속 예외가 발생합니다. [Errno I/O 장치의 잘못된 조합] -9993. 프로그램을 닫고 다시 시작하면 pa.open()에서 예외('잘못된 샘플 속도', -9997)가 발생합니다. . 재생용 더 이상 필요하지 않습니다! ! !

이 문제를 해결하는 방법은 무엇입니까?


당분간 해결 방법은 재생될 때마다 pyaudio.Pyaudio() 개체를 다시 여는 것입니다. 이는 약 10ms의 추가 CPU 시간을 소비합니다. 거의 20시간 동안 아무 문제 없이 계속해서 실행했습니다.

으아악
我想大声告诉你我想大声告诉你2686일 전1180

모든 응답(1)나는 대답할 것이다

  • 阿神

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

    가능한 해결 방법은 다음과 같습니다. ghost가 2016년 7월 30일에 댓글을 달았습니다

    회신하다
    0
  • 취소회신하다