我的python脚本在当前时间与文本文件中指定的时间匹配时执行mp3。但是一切都运行良好,但我注意到mplayer播放mp3文件之前的延迟和大约18秒的延迟。
反正有没有让我的python脚本更好,以摆脱18秒滞后并使mp3文件瞬间播放?
这是我的python脚本:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# import libraries
import json
import urllib2
from bs4 import BeautifulSoup
import requests
import datetime
import playsound
import os
import subprocess
dateSTR = datetime.datetime.now().strftime('%H:%M')
f = open('/home/pi/test.txt','r')
messagetest = f.read()
newnametest = messagetest.replace("\n","")
f.close()
if (dateSTR) == (newnametest):
os.system("mplayer -ao alsa:device=bluealsa /home/pi/test.mp3")
尝试在实际需要之前在子进程中启动mplayer
:
p = subprocess.Popen('mplayer -slave -idle -ao alsa:device=bluealsa', shell=True, stdin=subprocess.PIPE)
这应该启动mplayer
并让它等待你需要它。然后,当您想播放文件时,请执行以下操作:
p.communicate(input=b'loadfile /home/pi/test.mp3\n')
我创建了一个循环,类似于:
from time import sleep
from datetime import datetime
...
done = []
while 1:
dateSTR = datetime.now().strftime('%H:%M')
if (dateSTR) == (newnametest) and not dateSTR in done:
done.append(dateSTR)
os.system("mplayer -ao alsa:device=bluealsa /home/pi/test.mp3")
sleep(1)