【问题标题】:pyAudio starts streaming before start_stream is calledpyAudio 在调用 start_stream 之前开始流式传输
【发布时间】:2018-06-17 14:20:25
【问题描述】:

我想在回调模式下使用 pyAudio 并准备一个带有stream = pyaudio.PyAudio().open(...) 的流。我希望在使用stream.start_stream() 启动流之后调用我的callback 方法。但是,我的回调函数在我创建流对象后立即被调用(参见演示代码)。

是我使用 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

【问题讨论】:

    标签: python callback stream pyaudio


    【解决方案1】:

    pyaudio.Streamopen 初始化)的初始化程序默认启动流。如果你不希望它以PyAudio.open 开头,你可以通过start=False

    摘自the documentation强调我的):

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

    参数

    ...

    • start – 立即开始运行流。 默认为True。一般来说,没有理由将其设置为 False。

    【讨论】:

    • 奇怪的评论。将其设置为 False 的原因是当您需要将加载步骤与播放步骤分开时。
    猜你喜欢
    • 1970-01-01
    • 2019-06-27
    • 2016-08-08
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2016-01-12
    相关资源
    最近更新 更多