Я занимаюсь разработкой GPS (глобальный спутниковый бу-353s4 USB-тип) и проекта на базе Raspberry Pi 3B.В котором я хочу получить данные о широте и долготе GPS, в соответствии с этими данными я хочу воспроизвести некоторые видеофайлы, а также отследить название последнего воспроизведенного видео.весь этот процесс должен быть в то время как цикл означает бесконечный цикл.Я разработал логику для этого, проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда воспроизведение видео завершается, оно снова извлекает данные GPS и переходит в определенную папку, выбирает видеофайл и воспроизводит видео, в промежутке между двумя воспроизведением видео экран становится пустым. Я хочу непрерывное видеоиграть.Я использую OMXplayer для открытия видео. Я знаю, что это можно решить с помощью концепции многозадачности / многопоточности, но не знаю, как реализовать это в Python.это мой код:
# class to define background process thread
class Asyncfun(threading.Thread):
def __init__(self, text):
threading.Thread.__init__(self)
self.text = text
def run(self):
os.system(self.text)
print "play finished "
def Main():
try:
while True:
# get the GPS latitude longitude data using another gpsdatafetching file
stdn = gps2.latlong()
lat1 = round(float(stdn[0]),5)
long1 = round(float(stdn[1]),5)
ID = gps_geotest3.test1(lat1,long1)# get the areaid according to current latitudeand longitude
print "id is :", ID
if ID == None:
ID = 17
print "lat long is in this areaId : ",ID
location = '/home/pi/files/'
counter = 0 #keep a count of all files found
mp4files = [] #list to store all csv files found at location
lastplayedindex = 0
areaID = str(ID)
location += areaID
#print "file path is: ",location
for file in os.listdir(location):
if file.endswith(".mp4"):
#print "mp4 file found:\t", file
mp4files.append(str(file))
counter = counter+1
#get the lastplayedindex_aeraid file name
indexfilename='lastplayedindex_'
indexfilename +=areaID
indexfilename += '.txt'
#get the index number from lastplayedindex_aeraid file
with open(indexfilename,'rb') as input_file:
for line in input_file:
lastplayedindex = line
path = "/home/pi/files/"
omxcmd = "omxplayer --display=5 "
print "lastplayed index: ",lastplayedindex
if int(lastplayedindex)< (counter-1) : #compare with total filecount in folder
newlastindex=int(lastplayedindex)+1
vfile = mp4files[newlastindex] #videofile name
omxcmd += (location +'/') #append filelocation
omxcmd += vfile # append filename
#omxcmd is command to open videofile using OMXplayer
#play videofile iin backgroundprocess while sending acknowledgment to webserver about that file
background = Asyncfun(omxcmd)
background.start()
# code to update lastplayed index in local file
counter = 0
#to send acknowledgment to server about which video played last
print "sending acknowledgment to server.."
payload2 = {'DeviceMasterId': '30', 'Fk_Area_ID': areaID,'FileName':vfile}
R = requests.post('url to my website', params = payload2)
if R.status_code != 200:
print "Error:", R.status_code
else :
print "acknowledgment sent successfully."
background.join()
except (KeyboardInterrupt, SystemExit): #when you press ctrl+c
gpsp.running = False
gpsp.join()
scope.__del__()
if __name__ == '__main__':
Main()