#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)
, что это не так).