Узнать, что вызываемая программа выдала ошибку

subprocess.run('ffmpeg ***', shell=True)

Применяю subprocess, для выполнения команд, вызова программ. Если к примеру ffmpeg выдает ошибку. Как определить, что входе выполнения произошла ошибка и достать этот самый текст ошибки?

Не работает

result = sub.run(['ffmpeg', '-i', 'input', '-c:v', 'libaom-av1', '-b:v', '500K', '-aom-params', 'tune=psnr:enable-tpl-model=1', '/output.mp4'], stdout=sub.PIPE, encoding='utf-8')
print(result.stdout)

Ответы (1 шт):

Автор решения: Whale Crypto
import subprocess

def run_command(command):
    try:
        # Запускаем команду, сохраняя стандартный вывод и стандартный поток ошибок
        result = subprocess.run(
            command, 
            shell=True, 
            text=True, 
            capture_output=True,  # захватываем stdout и stderr
            check=True  # выбросить исключение при ошибке
        )
        # Выводим результат работы команды
        print("Output:", result.stdout)
    except subprocess.CalledProcessError as e:
        # Если команда завершилась с ошибкой, получаем текст ошибки
        print("Error:", e.stderr)

# Пример использования
command = "ffmpeg -i input.mp4 output.mp4"  # Замени на свою команду
run_command(command)
→ Ссылка