0
다음은 비동기 오디오 플레이어 용 코드입니다. 문제는 p.open(...)
이후 즉시 콜백 함수를 호출한다는 것입니다. start_stream
과 stop_stream
함수는 무엇을합니까? pyaudio.Stream 문서에서PyAudio에서 스트림을 만든 직후 스트리밍을 시작하지 않으려면 어떻게해야합니까?
class AsyncAudioPlayer(object):
def __init__(self, sampling_frequency, sample_width=2):
self.p = PyAudio()
self.buffer = MyBuffer()
self.stream = self.p.open(format=self.p.get_format_from_width(width=sample_width), rate=sampling_frequency,
output=True, channels=1, stream_callback=self.on_ready_to_play)
self.started = False
def close(self):
self.stream.stop_stream()
self.stream.close()
def start(self):
self.started = True
self.stream.start_stream()
def schedule_to_play(self, frame):
self.buffer.put_frames(frame)
if not self.started:
print("Not started. Starting now")
# self.start()
def on_ready_to_play(self, in_data, frame_count, time_info, status_flags):
print("frame count is {}, time_info {}, status flags {}".format(frame_count, time_info, status_flags))
return self.buffer.get_frames(frame_count), paContinue
콜백 번 발사, 또는 반복적인가? 스트림을 시작할 때 즉시 재생할 수 있도록 한 버퍼의 데이터를 대기열에 넣으려고합니까? –
paContinue 플래그에 따라 반복적으로 실행되지 않겠습니까? 제 솔직히 말해서 구체적으로 말하기 전에 한 번도 불을 지르지 않아야합니다. PortAudio의 문서를 읽은 후에 나는 내가 옳다고 생각합니다. – user1685095