使用pyaudio模拟红外遥控器

问题描述

我正在尝试使用pyaudio来模拟红外遥控器的按钮按下。红外接收器连接到3.5毫米插孔,我已将其连接到Windows 10机器并尝试记录。下图显示了IR线通常如何连接到我正在尝试模拟按下按钮的HDMI分配器。

Gist of HDMI splitter

我想用一个USB到3.5mm的线将IR换成3.5mm的线,并且能够“播放”来自其他设备的USB上的按钮按下。就像我说的那样,IR接收器的3.5毫米端目前已连接到Windows 10计算机中,并且我正在使用以下代码将其记录为WAV,据我所知这是无损的。

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 4
WAVE_OUTPUT_FILENAME = "output.wav"

just_changed = False

# record the audio
frames = []

p = pyaudio.PyAudio()

print('Starting')
stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)

for i in range(0,int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

stream.stop_stream()
stream.close()
p.terminate()
print('Ended')

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

当pyaudio录制时,我按下遥控器上的“ 1”按钮,当我在计算机上正常播放文件时,按下该声音时会发出一声“哔”的声音,因此我知道它正在被拾取。但是,当我通过USB将WAV播放到HDMI分配器时,它不会更改为与我按下的按钮相对应的输入。

我错过了什么吗?感觉应该有一种更简单的方法来摄取和存储3.5mm的原始输入。

注意:我也试图用原始数据写一个文件

file = open("output.raw","wb")
file.write(b''.join(frames))
file.close()

但是我一直找不到找到通过USB“扬声器”输出发送原始文件的好方法

如果我猜我会说这与采样率跳过我需要的帧有关,但我不知道如何验证。

如果我完全不了解这一点,请告诉我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)