나는 먼 길을왔다. 나는 거의 다 왔어. 스레드를 사용하여 스레딩으로 변환했으며 이제 비디오를 중간 재생할 수 있지만 첫 번째 비디오를 죽이거나 중지하는 데 여전히 문제가 있습니다. 기본적으로 비디오 플레이어는 OMXplayer를 사용하여 Raspberry Pi의 버튼으로 제어합니다. 지금은 한 비디오가 다른 버튼을 누르기 전에 재생을 마칠 때까지 기다려야합니다. 그렇지 않으면 여러 비디오가 동시에 재생되기 때문에 충돌이 발생합니다.활성 스레드 살해 또는 중지
많은 도움을 주셔서 감사합니다.
#!/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를을 스레드를 중지 할 수 있습니다. –
일부 코드를 읽었습니다 ... 같은 스레드를 사용하지 않는 이유는 무엇입니까? 그리고 파이썬에는'thread.stop()'이 없습니다 : https://docs.python.org/2/library/threading.html#thread-objects –
당신이 쓰레드를 상속하고 Boolean 보초를 사용하여 구현할 수 있다는 것을 의미했습니다. . –