Я хочу использовать pyAudio в режиме обратного вызова и подготовить поток с помощью stream = pyaudio.PyAudio().open(...)
. Я ожидаю, что мой метод callback
будет вызван после запуска потока с stream.start_stream()
. Однако моя функция обратного вызова вызывается сразу после создания объекта потока (см. Демонстрационный код).
Я использую pyAudio неправильно или это ошибка?
import time
import pyaudio
def callback(in_data, frame_count, time_info, status):
print("CALLBACK")
return (in_data, pyaudio.paContinue)
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(2), channels=1, rate=44100,
input=True, output=False, stream_callback=callback,
frames_per_buffer=5000)
# XXX: Note that I do not call stream.start_stream() here
time.sleep(5)
stream.close()
Я использую python 3.6.5 и pyaudio 0.2.11 и portaudio 19.6.0
Инициализатор для pyaudio.Stream
(который инициализирует open
) запускает поток по умолчанию. Если вы не хотите, чтобы это началось с PyAudio.open
, вы можете передать start=False
.
Выдержка из документации (акцент мой):
__init__(PA_manager, rate, channels,..., start=True,...)
Параметры:
...
start
- запуск потока, запускаемого немедленно. По умолчанию используется значениеTrue
. В общем, нет причин устанавливать это на False.