Вопросы

Подпроцесс Python.Popen + ffmpeg прерывает ввод терминала

Я писал модуль для создания случайных снимков экрана из видео и использовал subprocess.Popen для параллельного запуска нескольких команд, но это приводит к тому, что терминал отказывается отображать какие-либо входные данные после завершения работы программы python. Но он по-прежнему принимает большинство вводов с клавиатуры, просто не отображает их.

Только если я наберу команду reset, терминал начнет работать нормально. Это произошло на ssh с замазкой и другими ssh-клиентами, даже на ssh с powershell в Windows и непосредственно на терминале с VNC.

Но без ssh, непосредственно выполняющего ту же команду в Windows, ssh работает нормально, и входные данные видны

вот пример gif того, что происходит

и код для его воспроизведения

#!/usr/bin/env python3.8
from subprocess import Popen

def create_screenshots():

    commands = ['ffmpeg -hide_banner -loglevel panic -ss 329  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.329.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 312  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.312.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 533  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.533.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 444  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.444.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 411  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.411.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 413  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.413.frame.png"']
    screenshot_files = []
    processes = [Popen(command, shell=True) for command in commands]
    for process in processes:
        process.wait()
    
    return screenshot_files


create_screenshots()
Читать:
MySQL пропускает значения auto_increment (продолжение)

Похожие записи

run-p: команда не найдена

admin

Изменение столбцов для получения уникальных значений, транспонирование другого столбца и добавление процента этих уникальных значений.

admin

DiscordAPIError: Unknown Message (Бот для назначения ролей в сообщении)

admin

Переключение функций ODE в Julia

admin

извлекать блестящую дату и диапазон входных данных

admin

Traefik как Kubernetes Ingress в Azure — назначение статического IP-адреса службе Traefik

admin