I want to use gstreamer plugins (gst-plugins-good-1.22.7) to split video in tda4vm EVM as a node, call video_encode.but I find not cannot finish split video every 5 minutes.The problem is the split video is less 5 minutes,and the split video has some duplicate frames and is random.
void construct_gst_strings(NMVideoEncodeConfig *config) { ENTRY_LOG int32_t i = 0; for (uint8_t ch = 0; ch < gst_wrapper_params.in_num_channels; ch++) { snprintf(gst_wrapper_params.m_AppSrcNameArr[ch], 32u, "myAppSrc%d", ch); i += snprintf(&gst_wrapper_params.m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i, "appsrc format=GST_FORMAT_TIME is-live=true " "do-timestamp=true block=false name=%s ! queue \n", gst_wrapper_params.m_AppSrcNameArr[ch]); i += snprintf( &gst_wrapper_params.m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i, "! video/x-raw, width=(int)%d, height=(int)%d, " "framerate=(fraction)30/1, format=(string)%s, " "interlace-mode=(string)progressive, colorimetry=(string)bt601 \n", gst_wrapper_params.in_width, gst_wrapper_params.in_height, gst_wrapper_params.in_format); i += snprintf(&gst_wrapper_params.m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i, "! v4l2h264enc bitrate=%d \n", config->bitrate); i += snprintf(&gst_wrapper_params.m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i, "! h264parse \n"); if (config->enable_split) { i += snprintf(&gst_wrapper_params.m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i, "! splitmuxsink location=%s/output_video_%d_%%d.264 " "max-size-time=300000000000\n", config->storage_path, ch); } else { i += snprintf(&gst_wrapper_params.m_cmdString[i], CODEC_MAX_LEN_CMD_STR - i, "! filesink location=%s/output_video_%d.264 \n", config->storage_path, ch); } } EXIT_LOG }