У меня проблема с получением двух подпроцессов для совместной работы.
Первыми подпроцессами является транскодирование видеопотока:
subprocess.Popen("ffmpeg -i input output", shell=True)
Мне нужно, чтобы это выполнялось в фоновом режиме моей программы, транскодируя видео с моей IP-камеры в поток mjpeg.
Вторым подпроцессом является демон Openalpr, который просматривает поток mjpeg и возвращает номерные знаки автомобилей, которые он видит в потоке.
subprocess.Popen("alprd -f", shell=True)
Вот пример кода теста Python, который пытаетсязапустите оба подпроцесса:
import subprocess
subprocess.Popen("ffmpeg -i input output", shell=True)
subprocess.Popen("alprd -f", shell=True)
Когда я это сделаю, транскодирование ffmpeg работает нормально, я могу просмотреть транскодированный поток mjpeg и увидеть подробный вывод ffmpegs в консоли.Однако демон alprd, похоже, не возвращает номерные знаки, как ожидалось.Фактически, я не вижу никакого вывода из alprd в окне консоли.
Если я запускаю приведенный выше код только с одним подпроцессом, он работает, например,
import subprocess
subprocess.Popen("ffmpeg -i input output", shell=True)
работает нормально, как и:
import subprocess
subprocess.Popen("alprd -f", shell=True)
Если я запускаю любой из двух приведенных выше фрагментов рабочего кода и одновременно запускаю другую команду в отдельном терминале Linux, все это работает.
Яявно не понимая что-то с подпроцессами, они явно конфликтуют друг с другом, но может ли кто-нибудь объяснить, что происходит и как решить проблему?
Спасибо!