pyAudio начинает потоковую передачу до вызова start_stream

1

Я хочу использовать 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

Теги:
callback
stream
pyaudio

1 ответ

1
Лучший ответ

Инициализатор для pyaudio.Stream (который инициализирует open) запускает поток по умолчанию. Если вы не хотите, чтобы это началось с PyAudio.open, вы можете передать start=False.

Выдержка из документации (акцент мой):

__init__(PA_manager, rate, channels,..., start=True,...)

Параметры:

...

  • start - запуск потока, запускаемого немедленно. По умолчанию используется значение True. В общем, нет причин устанавливать это на False.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню