Как получить конкретный тип ошибки Gstreamer в Python

#python #gstreamer #bus

#питон #gstreamer #Автобус

Вопрос:

Я хотел бы знать конкретный тип ошибки ошибки gstreamer. Я нашел этот пример кода:

  import gi import sys gi.require_version('Gst', '1.0') from gi.repository import GObject, Gst def bus_call(bus, message, loop):  t = message.type  if t == Gst.MessageType.EOS:  sys.stdout.write("End-of-streamn")  loop.quit()  elif t==Gst.MessageType.WARNING:  err, debug = message.parse_warning()  sys.stderr.write("Warning: %s: %sn" % (err, debug))  elif t == Gst.MessageType.ERROR:  err, debug = message.parse_error()  sys.stderr.write("Error: %s: %sn" % (err, debug))  loop.quit()  return True  

В моем случае я работаю с видеопотоками rtsp. Некоторые из них, возможно, находятся в автономном режиме, и поэтому приведенный выше код выведет ошибку:

 Error: gst-resource-error-quark: Could not read from resource. (9): gstrtspsrc.c(5917): gst_rtsp_src_receive_response (): /GstPipeline:pipeline0/GstBin:source-bin-00/GstURIDecodeBin:uri-decode-bin/GstRTSPSrc:source:  

Предположим, я хочу, чтобы код вызывал функцию при возникновении этой конкретной ошибки. Я мог бы сделать что-то вроде:

 if str(err) == "gst-resource-error-quark: Could not read from resource. (9)":  do_something()  

Однако это кажется довольно уродливым, потому что, похоже, полагается на сообщение об ошибке, которое, возможно, может измениться в будущем. Есть ли что-нибудь, что можно сказать, например:

 if err == ErrorReadOnSource:  do_something()  

Я ищу что-то вроде уникального идентификатора ошибки или перечисления ошибок (предполагая str(err) , что это не так).