问题描述
我正在尝试使用 Python 脚本在 5 秒的剪辑中录制音频。直接从终端 (fs.unlink('path/to/file')
) 运行时,脚本运行良好,但当我尝试使用 python3 record_audio.py
从启动时运行它时失败。这是脚本:
systemctl
我像这样设置了服务import pyaudio,wave,time,sys,os
from array import array
FORMAT=pyaudio.paInt16
CHANNELS=1
CHUNK=1024
RATE=44100
RECORD_SECONDS=5
audio=pyaudio.PyAudio()
stream=audio.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)
while True:
# read data
data=stream.read(CHUNK)
data_chunk=array('h',data)
frames=[]
print("recording")
for i in range(0,int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
# write to file
words = ["RECORDING-",time.strftime("%Y%m%d-%H%M%s"),".wav"]
FILE_NAME= "".join(words)
wavfile=wave.open(FILE_NAME,'wb')
wavfile.setnchannels(CHANNELS)
wavfile.setsampwidth(audio.get_sample_size(FORMAT))
wavfile.setframerate(RATE)
wavfile.writeframes(b''.join(frames))
wavfile.close()
print("saved")
:
sudo nano /etc/systemd/system/record_audio.service
然后我运行了 [Unit]
Description=My service
[Service]
Type=oneshot
ExecStart=/usr/bin/python3 -u record_audio.py
WorkingDirectory=/home/pi
User=pi
[Install]
WantedBy=multi-user.target
。为了测试服务,我使用 sudo systemctl daemon-reload
。结果是它保存了一个文件,然后以这个错误退出:
sudo systemctl start record_audio.service
Job for record_audio.service Failed because the control process exited with error code.
See "systemctl status record_audio.service" and "journalctl -xe" for details.
给出:
systemctl status record_audio.service
预期的结果是它会在 5 秒的剪辑中无限期地记录音频。当我从终端运行 ● record_audio.service - My service
Loaded: loaded (/etc/systemd/system/record_audio.service; disabled; vendor preset: enabled)
Active: Failed (Result: exit-code) since Sat 2021-07-31 17:56:15 BST; 3s ago
Process: 3651 ExecStart=/usr/bin/python3 -u record_audio_2.py (code=exited,status=1/FAILURE)
Main PID: 3651 (code=exited,status=1/FAILURE)
Jul 31 17:56:15 raspBerrypi python3[3651]: recording
Jul 31 17:56:15 raspBerrypi python3[3651]: Traceback (most recent call last):
Jul 31 17:56:15 raspBerrypi python3[3651]: File "record_audio_2.py",line 24,in <module>
Jul 31 17:56:15 raspBerrypi python3[3651]: data = stream.read(CHUNK)
Jul 31 17:56:15 raspBerrypi python3[3651]: File "/home/pi/.local/lib/python3.7/site-packages/pyaudio.py",line 608,in read
Jul 31 17:56:15 raspBerrypi python3[3651]: return pa.read_stream(self._stream,num_frames,exception_on_overflow)
Jul 31 17:56:15 raspBerrypi python3[3651]: OSError: [Errno -9981] Input overflowed
Jul 31 17:56:15 raspBerrypi systemd[1]: record_audio.service: Main process exited,code=exited,status=1/FAILURE
Jul 31 17:56:15 raspBerrypi systemd[1]: record_audio.service: Failed with result 'exit-code'.
Jul 31 17:56:15 raspBerrypi systemd[1]: Failed to start My service.
时它工作正常,所以我不知道如何解决这个问题。有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)