• Hardware Platform (Jetson / GPU): RTX-2080Ti
• DeepStream Version: 5.1-devel
I need to save separate multi-RTSP at the same time. When I create multiple NvDsSRContext to recordbin for each of sources I got an error:
This is my pipeline:
Can you support to me?
Thanks.
Please tell us how to reproduce the coredump?
After entering one rtsp (or multi-rtsp), I meet early an error “Core Dump”.
I create struct NvDsSRContext to running four recordbin as the following snippet code:
typedef struct {
NvDsSRContext *datax[MAX_NUMBER];
} DataCtx;
static gboolean
smart_record_event_generator (gpointer data)
{
NvDsSRSessionId sessId = 0;
guint startTime = START_TIME;
guint duration = SMART_REC_DURATION;
for (int i=0; i<MAX_NUMBER; i++){
g_printerr ("___________________SOURCE-%02d____________________ \n", i);
DataCtx *ctx = (DataCtx *) data;
if (ctx->datax[i]->recordOn) {
g_print ("Recording done.\n");
if (NvDsSRStop (ctx->datax[i], 0) != NVDSSR_STATUS_OK)
g_printerr ("Unable to stop recording\n");
} else {
g_print ("Recording started..\n");
if (NvDsSRStart (ctx->datax[i], &sessId, startTime, duration,
NULL) != NVDSSR_STATUS_OK)
g_printerr ("Unable to start recording\n");
}
}
return TRUE;
}
And snippet code in main part:
DataCtx container;
params.containerType = SMART_REC_CONTAINER;
params.videoCacheSize = VIDEO_CACHE_SIZE;
params.defaultDuration = SMART_REC_DEFAULT_DURATION;
params.callback = smart_record_callback;
for (int i=0; i <num_sources; i++){
g_printerr("_____Starting Recordbin--%d_____ \n", i);
char temp[3];
g_snprintf(temp, 2, "stream_%d",i);
params.fileNamePrefix = (gchar *)temp;
if (NvDsSRCreate (&container.datax[i], ¶ms) != NVDSSR_STATUS_OK) {
g_printerr ("Failed to create smart record bin");
return -1;
}
encoder_post_osd = gst_element_factory_make ("nvv4l2h264enc", "encoder-post-osd");
parser_post_osd = gst_element_factory_make ("h264parse", "parser-post-osd");
queue_post_osd = gst_element_factory_make ("queue", "queue-post-osd");
gst_bin_add_many (GST_BIN (pipeline), queue_post_osd, encoder_post_osd,
parser_post_osd, container.datax[i]->recordbin, NULL);
if (!gst_element_link_many (tee_post_osd, queue_post_osd, encoder_post_osd,
parser_post_osd, container.datax[i]->recordbin, NULL)) {
g_print ("Elements not linked. Exiting. \n");
if(NvDsSRDestroy (container.datax[i]) != NVDSSR_STATUS_OK)
g_printerr ("Unable to destroy recording instance\n");
}
}
if (container.datax[i]) {
g_timeout_add (SMART_REC_DURATION * 1000, smart_record_event_generator,
container.datax[i]);
}
}
Please debug your code. You need to make sure the coredump is caused by deepstream components.
system
Closed
7
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.