• Hardware Platform (Jetson / GPU)
Jetson Nano • DeepStream Version
5.0 • JetPack Version (valid for Jetson only)
R32 (release), REVISION: 5.1, GCID: 27362550, BOARD: t210ref, EABI: aarch64, DATE: Wed May 19 18:07:59 UTC 2021 • questions
I want to stream multiple RTSP sources and able to run recording more than one at the same time based on event. From what i try is NvDsSRCreate() always return 0 for session ID. And if i start when a recording is on, NvDsSRStart not return NVDSSR_STATUS_OK. So i think i can’t record more than one at the same time using only 1 NvDsSRContext. Do i have to make the context according to the number of sources? If so how is the pipeline gonna be? Or am i missing something?
I have another question, why NvDsSRStop give a GST_MESSAGE_EOS signal to gststream bus call? Is there a way to make NvDsSRStop not doing it? Because if i don’t bother the signal, turns out fine but always giving below info:
End of stream
Opening in BLOCKING MODE
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261
GST_MESSAGE_EOS signal is necessary for the sink to know the recording finished. It is a gstreamer basic signal. Please refere to gstreamer document. https://gstreamer.freedesktop.org/
It works, but if i start more than 1 recordbin the result video is messy (somehow combine). My hypothesis is recordbin only enabling a flag that it will record every frame that come into recordbin source. Is this true?
So if i want to record multiple source at the same time, i need multiple pipeline for each source (can’t use streammux), like below pipelines:
source1 → do something → recordbin1
source2 → do something → recordbin2
source3 → do something → recordbin3
source4 → do something → recordbin4
Above is the full pipeline that i currently run. In a nutshell, i want to start recording based on the stream source based on simple event (frame number modulo; just for a proof of concept). But after this simple pipeline, i will create a custom motion detection plugins for the event.
I loop through all provided rtsp source link and create pipeline for each source. It works. But after a couple of success recording (start and stop), when recording start it shows error as below:
Recording stream 0 started..
Recording stream 1 started..
Recording stream 2 started..
ERROR from element mux_elem1: Could not multiplex stream.
Error details: gstqtmux.c(4561): gst_qt_mux_add_buffer (): /GstPipeline:stream-C85453656/GstBin:record_bin1/GstBin:enc_bin1/GstQTMux:mux_elem1:
Buffer has no PTS.
Opening in BLOCKING MODE
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261
Then bus loop receive EOS and the run loop exit. But when i try deepstream_testsr, Those error never occured. Can you give me a pointer?
I’ve tried deepstream-testsr from sample-apps. It works fine when bounding box is included, but error occured just like my case when i disable bounding box (-e 0 flag).