Как отловить ошибку соединения 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