Как отловить ошибку соединения ffmpeg на python

Я работаю на ffmpeg с python. Это работает, когда удаленный сервер работает хорошо, однако, когда удаленный сервер не работает, я мог видеть сообщение на оболочке, говорящее: "Соединение с tcp://xxxxxxx не удалось: соединение отказано, блабла" '

pro = sp.Popen(command, preexec_fn=os.setsid, shell=False, stderr=sp.PIPE, stdout=sp.PIPE)

Подход к исключению ловли 1:

try:
   out = self.pro.stderr.readline()
   while out:
            print '......'
except BrokenPipeError:
     print 'err'

метод ловли исключений 2:

for line in self.pro.stderr:
    try:
        print line
    except BrokenPipeError:
        print 'error'

Однако ни одна из этих работ.

1 ответ

communicate() возвращает кортеж (stdoutdata, stderrdata) так что вам просто нужно напечатать второй элемент:

cmd = ('ffmpeg', '-hide_banner', '-i', 'tcp://127.0.0.1:10000', '-c', 'copy', '-f', 'null', '/dev/null');
s = subprocess.Popen(cmd, shell=False, preexec_fn=os.setsid, stderr=subprocess.PIPE)
# print stderr
print s.communicate()[1]

Выход:

$ ./test.py 
[tcp @ 0x55a01c945000] Connection to tcp://127.0.0.1:10000 failed: Connection refused
tcp://127.0.0.1:10000: Connection refused
Другие вопросы по тегам