Отключение дочернего процесса для продолжения выполнения программы
Я пытаюсь сделать небольшой скрипт на Python для потоковой передачи с GoPro на ПК
from selenium import webdriver
from subprocess import call
import subprocess, sys
import time
import urllib
import urllib2
pid = subprocess.Popen([sys.executable, "Sel.py"])
call(["ffplay", "-fflags", "nobuffer", "udp://:8554"])
driver = webdriver.Firefox(executable_path='/usr/bin/geckodriver')
while True:
time.sleep(10)
driver.get("http://10.5.5.9/gp/gpControl/execute?p1=gpStream&a1=proto_v2&c1=restart")
Я не очень знаком с Python, и моя цель - открыть ffplay с этими параметрами, а затем выполнить оставшуюся часть программы (перезагрузка страницы каждые 10 секунд). Теперь, когда я запускаю скрипт, он постоянно делает этот системный вызов. Есть ли способ отсоединить выполнение ffplay от выполнения кода на python?
2 ответа
Не следует повторно вызывать команду stream http, вместо этого используйте магическую команду keep alive: http://github.com/konradit/goprostream
"Call" всегда будет ждать завершения вызываемого процесса. Я думаю, вам нужно использовать Popen для обеих операций, так как он вернет управление вашему коду. На https://pythonspot.com/python-subprocess/ есть краткое руководство