запишите выходной звук в Python

я хочу программно записать звук, выходящий из моего ноутбука в Python. я нашел PyAudio и придумал следующую программу, которая выполняет задачу:

import pyaudio, wave, sys

chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = sys.argv[1]

p = pyaudio.PyAudio()
channel_map = (0, 1)

stream_info = pyaudio.PaMacCoreStreamInfo(
    flags = pyaudio.PaMacCoreStreamInfo.paMacCorePlayNice,
    channel_map = channel_map)

stream = p.open(format = FORMAT,
                rate = RATE,
                input = True,
                input_host_api_specific_stream_info = stream_info,
                channels = CHANNELS)

all = []
for i in range(0, RATE / chunk * RECORD_SECONDS):
        data = stream.read(chunk)
        all.append(data)
stream.close()
p.terminate()

data = ''.join(all)
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()

проблема, я должен подключить гнездо для наушников к разъему микрофона. я пытался заменить эти строки:

input = True,
input_host_api_specific_stream_info = stream_info,

с ними:

output = True,
output_host_api_specific_stream_info = stream_info,

но затем я получаю эту ошибку:

Traceback (новый вызов в последний раз):
Файл "./test.py", строка 25, в
данные = stream.read (блок)
Файл "/Library/Python/2.5/site-packages/pyaudio.py", строка 562, в чтении
paCanNotReadFromAnOutputOnlyStream)
IOError: [Errno Не входной поток]-9975

существует ли способ инстанцировать потока PyAudio так, чтобы он ввел от вывода компьютера, и я не должен подключать гнездо для наушников к микрофону? существует ли лучший способ пойти об этом? я предпочел бы засовывать w/приложение Python и избегать какао.

8
задан aaronstacy 12 January 2010 в 04:08
поделиться

1 ответ

Я всегда находил Tech on the Net хорошей краткой справкой

-121--2446138-

Есть хорошая страница на quirksmode.org, которая отвечает на этот вопрос довольно красиво IMHO. http://www.quirksmode.org/oddsandends/wbr.html

Короче говоря, используйте < wbr/> или & # 8203; (или & застенчиво; но вы упомянули, что не хотите тире).

-121--805709-

к сожалению, не является безупречным способом сделать это, но Audio Hijack и Прослушка являются лучшими доступными инструментами для этого.

0
ответ дан 5 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: