오디오를 재생하기 위해 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시간 동안 아무 문제 없이 계속해서 실행했습니다.
으아악
가능한 해결 방법은 다음과 같습니다. ghost가 2016년 7월 30일에 댓글을 달았습니다