Я прошел долгий путь и почти достиг цели. Я перешел с использования Thread на Threading и теперь могу переключать видео во время воспроизведения, но у меня все еще возникают проблемы с завершением или остановкой первого видео. По сути, я делаю видеоплеер, управляемый кнопками на Raspberry Pi, используя OMXplayer. На данный момент мне нужно дождаться окончания воспроизведения одного видео, прежде чем нажимать другую кнопку, иначе произойдет сбой, потому что одновременно воспроизводятся несколько видео.
Большое спасибо за любую помощь, которую вы, ребята, можете предложить.
#!/usr/bin/python
import RPi.GPIO as GPIO
import subprocess
import threading
import time
GPIO.setmode (GPIO.BCM)
GPIO.setwarnings (False)
GPIO.setup(9, GPIO.IN) # Button 1
GPIO.setup(10, GPIO.IN) # Button 2
def shoppingcart():
global current_video
while True:
if GPIO.input(9):
#current_video.terminate()
#current_video.kill()
print "Play Shoppingcart"
time.sleep(1)
current_video=subprocess.Popen(['omxplayer','-b','Desktop/videos/shoppingcart.mp4'],
stdin=subprocess.PIPE,stdout=subprocess.PIPE,
stderr=subprocess.PIPE,close_fds=True)
def dodgeballs():
global current_video
while True:
if GPIO.input(10):
#current_video.terminate()
#current_video.kill()
print "Play Dodgeballs"
time.sleep(1)
current_video=subprocess.Popen(['omxplayer','-b','Desktop/videos/dodgeballs.mp4'],
stdin=subprocess.PIPE,stdout=subprocess.PIPE,
stderr=subprocess.PIPE,close_fds=True)
v1 = threading.Thread( name='shoppingcart', target=shoppingcart ) # Videos thread
v2 = threading.Thread( name='dodgeballs', target=dodgeballs ) # Videos thread
v1.start()
v2.start()
while True:
pass
GPIO.cleanup() #Reset GPIOs
thread.stop()
: docs.python.org/2/ библиотека/threading.html#thread-objects - person Reut Sharabani   schedule 28.01.2015