I tried what you say and complete this code (below) ! is this code good? i feel like it’s a little slow and not optimize!
Can you check it?
And i can not use “usb_cam_source.connect(“child-added”,decodebin_child_added,nbin)” in my code either!
ERR: “TypeError: <gi.GstV4l2Src object at 0x7f8a016ab0 (GstV4l2Src at 0x361ee270)>: unknown signal name: child-added”
And can i get fps of the system?
Note: I ran this code with yolov4 enigine, batchsize =2 and i set the tiler’s width-height are 480-320.
Thank you for your reply
def create_source_bin(index,uri):
print("Creating source bin")
bin_name="source-bin-%02d" %index
print(bin_name)
nbin=Gst.Bin.new(bin_name)
if not nbin:
sys.stderr.write(" Unable to create source bin \n")
usb_cam_source=Gst.ElementFactory.make("v4l2src", "usb-cam-source")
usb_cam_source.set_property("device",uri)
usb_cam_source.connect("pad-added",cb_newpad,nbin)
#usb_cam_source.connect("child-added",decodebin_child_added,nbin)
caps_v4l2src = Gst.ElementFactory.make("capsfilter", "v4l2src_caps")
if not caps_v4l2src:
sys.stderr.write(" Unable to create v4l2src capsfilter \n")
vidconvsrc = Gst.ElementFactory.make("videoconvert", "convertor_src1")
if not vidconvsrc:
sys.stderr.write(" Unable to create videoconvert \n")
nvvidconvsrc = Gst.ElementFactory.make("nvvideoconvert", "convertor_src2")
if not nvvidconvsrc:
sys.stderr.write(" Unable to create Nvvideoconvert \n")
caps_vidconvsrc = Gst.ElementFactory.make("capsfilter", "nvmm_caps")
if not caps_vidconvsrc:
sys.stderr.write(" Unable to create capsfilter \n")
caps_vidconvsrc.set_property('caps', Gst.Caps.from_string("video/x-raw(memory:NVMM)"))
caps_v4l2src.set_property('caps', Gst.Caps.from_string("video/x-raw, framerate=30/1"))
print('adding element to source bin')
Gst.Bin.add(nbin,usb_cam_source)
Gst.Bin.add(nbin, caps_v4l2src)
Gst.Bin.add(nbin, vidconvsrc)
Gst.Bin.add(nbin,nvvidconvsrc)
Gst.Bin.add(nbin,caps_vidconvsrc)
print('linking elemnent in source bin')
nvvidconvsrc.link(caps_vidconvsrc)
usb_cam_source.link(caps_v4l2src)
caps_v4l2src.link(vidconvsrc)
vidconvsrc.link(nvvidconvsrc)
nvvidconvsrc.link(caps_vidconvsrc)
pad = caps_vidconvsrc.get_static_pad("src")
ghostpad = Gst.GhostPad.new("src",pad)
bin_pad=nbin.add_pad(ghostpad)
if not bin_pad:
sys.stderr.write(" Failed to add ghost pad in source bin \n")
return None
return nbin