I'm using splitmuxsink in Gstreamer with C language to record video. This is
my pipeline: source -> frameratefilter -> encoder -> h264parse -> splitmuxsink My pipeline is working good. But my video has been broken when I stop the pipeline by send EOS event to elements. I set video duration is 5 minutes. By some reason, I want to close it earlier. This is way I close them: gst_element_send_event(source, gst_event_new_eos()); gst_element_send_event(splitmuxsink, gst_event_new_eos()); gst_element_send_event(frameratefilter, gst_event_new_eos()); gst_element_send_event(encoder, gst_event_new_eos()); gst_element_send_event(h264parse, gst_event_new_eos()); gst_element_send_event(pipeline, gst_event_new_eos()); gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); And this is the error I got: ERROR GStreamer encountered a general stream error. for file://video1.mp4 ERROR debug information: ../../../imx-gst1.0-plugin-4.1.6/plugins/aiurdemux/aiurdemux.c(1015): aiurdemux_pull_task (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstAiurDemux:aiurdemux0: streaming stopped, reason error, state 1 Reached end of play list. I also try to set state of elements from: PLAYING --> PAUSED --> READY --> NULL --> send EOS. But It's also not working. How can I fix it ? -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
it is enough when you send EOS to the pipeline, but you have to wait for an EOS message on the message bus before setting the pipeline to NULL. Gruesse -----Ursprüngliche Nachricht----- Von: gstreamer-devel <[hidden email]> Im Auftrag von ToanVnET Gesendet: Samstag, 29. August 2020 11:40 An: [hidden email] Betreff: Video break when using with splitmuxsink I'm using splitmuxsink in Gstreamer with C language to record video. This is my pipeline: source -> frameratefilter -> encoder -> h264parse -> splitmuxsink My pipeline is working good. But my video has been broken when I stop the pipeline by send EOS event to elements. I set video duration is 5 minutes. By some reason, I want to close it earlier. This is way I close them: gst_element_send_event(source, gst_event_new_eos()); gst_element_send_event(splitmuxsink, gst_event_new_eos()); gst_element_send_event(frameratefilter, gst_event_new_eos()); gst_element_send_event(encoder, gst_event_new_eos()); gst_element_send_event(h264parse, gst_event_new_eos()); gst_element_send_event(pipeline, gst_event_new_eos()); gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); And this is the error I got: ERROR GStreamer encountered a general stream error. for file://video1.mp4 ERROR debug information: ../../../imx-gst1.0-plugin-4.1.6/plugins/aiurdemux/aiurdemux.c(1015): aiurdemux_pull_task (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstAiurDemux:aiurdemux0: streaming stopped, reason error, state 1 Reached end of play list. I also try to set state of elements from: PLAYING --> PAUSED --> READY --> NULL --> send EOS. But It's also not working. How can I fix it ? -- Sent from: https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgstreamer-devel.966125.n4.nabble.com%2F&data=02%7C01%7C%7C562c7c1d2bf5487f523408d84c08ac38%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637342947430416216&sdata=aWvJFmDuwfQWK%2F5EkH4fswP5bhwGdgzNkWohFV7rhe0%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fgstreamer-devel&data=02%7C01%7C%7C562c7c1d2bf5487f523408d84c08ac38%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637342947430416216&sdata=qUuOt3G88ShgnI5wpGhXQsz25Ao%2BKtjmQTIhAYvTSTY%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
This post was updated on .
Hi,
Thank you for your reply. I added: msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS); if (msg != NULL){ gst_message_unref (msg); } before: gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); But my application seem stuck in it. [UPDATE] I also set: g_object_set(G_OBJECT(splitmuxsink), "async-handling", 1, NULL); To set special format filename. Did you think the problem in it ? For sure, I also set the opposite value before send EOS event to the elements. But the video is still break. -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list gstreamer-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
I don't know where the valve is in your pipeline but g_object_set(G_OBJECT(valve), "drop",1 ,NULL); drops the EOS message as well( at least up to and including 1.16.2) so EOS wouldn't reach splitmuxsink. Gruesse -----Ursprüngliche Nachricht----- Von: gstreamer-devel <[hidden email]> Im Auftrag von ToanVnET Gesendet: Montag, 31. August 2020 07:30 An: [hidden email] Betreff: Re: AW: Video break when using with splitmuxsink Hi, I also add: msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS); if (msg != NULL){ gst_message_unref (msg); } before: gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); But my application seem stuck in it. [UPDATE] I also set: g_object_set(G_OBJECT(splitmuxsink), "async-handling", 1, NULL); To set special format filename. g_object_set(G_OBJECT(valve), "drop",1 ,NULL); To stop a thread which unnecessary in some case. Did you think the problem in it ? For sure, I also set the opposite value before send EOS event to the elements. But the video is still break. -- Sent from: https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgstreamer-devel.966125.n4.nabble.com%2F&data=02%7C01%7C%7Cecdedbcde2f34b19f21208d84d797688%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637344531371457869&sdata=9kf0ZjZS8RJpyACsxpXVbvUTPTzHSwDIf53XxfVGHSw%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fgstreamer-devel&data=02%7C01%7C%7Cecdedbcde2f34b19f21208d84d797688%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637344531371457869&sdata=93%2B5j0SxL4vEhdDDHo92q6LrNSwAnkoVztKBPvDxyeM%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
This is my mistake. There is no valve element in my pipeline. I updated my
answer then. I quite obstructive now. May you give me some details guide in code. I also can post my code if needed. -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
This post was updated on .
Hi,
This is my code simple version: static gchar* cb_FormatLocation(GstElement* splitmuxsink, guint fragment_id, const int* offset){ //Set filename return filename; } gboolean timeout_callback(gpointer data){ if ( //meet signal stop video ){ g_main_loop_quit((GMainLoop*)data); return FALSE; } return TRUE; } int main(int argc, char * argv[]){ GstElement *pipeline, *source, *frameratefilter_, *h264parse, *encoder, *splitmuxsink; /* Initialize GStreamer */ gst_init (&argc, &argv); loop = g_main_loop_new ( NULL , FALSE ); /* Create the empty pipeline */ pipeline = gst_pipeline_new ("test-pipeline"); /* Create the elements */ source = gst_element_factory_make ("imxv4l2src", NULL); h264parse = gst_element_factory_make("h264parse",NULL); encoder = gst_element_factory_make("vpuenc_h264",NULL); frameratefilter = gst_element_factory_make("capsfilter", NULL); splitmuxsink = gst_element_factory_make("splitmuxsink", NULL); // Set parameters for some elements g_object_set(G_OBJECT(source), "device", "/dev/video0", NULL); g_object_set(G_OBJECT(splitmuxsink), "location", filename, NULL); g_object_set(G_OBJECT(splitmuxsink), "max-size-time", nanoDuration, NULL); g_object_set(G_OBJECT(splitmuxsink), "async-handling", 1, NULL); g_signal_connect (G_OBJECT(splitmuxsink), "format-location", G_CALLBACK(cb_FormatLocation), &offset); g_object_set(G_OBJECT(frameratefilter), "caps", gst_caps_from_string("video/x-raw,format= (string)NV12,width=640,height=480,framerate=(fraction)30/1"), NULL); /* Build the pipeline */ gst_bin_add_many (GST_BIN (pipeline), source, overlay, frameratefilter, encoder, h264parse, splitmuxsink, NULL); if ( gst_element_link_many(source, overlay, frameratefilter, encoder, h264parse, splitmuxsink, NULL) != TRUE ){ g_error("Failed to link save elements!"); gst_object_unref (pipeline); return -1; } /* Start playing */ ret = gst_element_set_state (pipeline, GST_STATE_PLAYING); if (ret == GST_STATE_CHANGE_FAILURE) { g_printerr ("Unable to set the pipeline to the playing state.\n"); gst_object_unref (pipeline); return -1; } g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, 1 , timeout_callback , loop, NULL); g_main_loop_run (loop); g_main_loop_unref(loop); bus = gst_element_get_bus (pipeline); gst_element_send_event(source, gst_event_new_eos()); gst_element_set_state (splitmuxsink, GST_STATE_PAUSED); gst_element_set_state (splitmuxsink, GST_STATE_READY); gst_element_set_state (splitmuxsink, GST_STATE_NULL); gst_element_send_event(splitmuxsink, gst_event_new_eos()); gst_element_send_event(frameratefilter, gst_event_new_eos()); gst_element_send_event(encoder, gst_event_new_eos()); gst_element_send_event(h264parse, gst_event_new_eos()); gst_element_send_event(pipeline, gst_event_new_eos()); gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); return 0; } -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list gstreamer-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
why not replace all these gst_element_send_event(source, gst_event_new_eos()); ... with gst_element_send_event(pipeline, gst_event_new_eos()); Then add a message handler along the lines of GstBusSyncReply GstreamerCamera:: BusFunc(GstBus* bus, GstMessage* message, gpointer user_data) { (void)bus; GstBusSyncReply busReply = GST_BUS_PASS; switch (GST_MESSAGE_TYPE(message)) { case GST_MESSAGE_EOS: { pRecorder->setEosReceived(); } break; } They you must wait for EOS. Use a condition variable or promise and future or sum such event before setting the pipeline state. -----Ursprüngliche Nachricht----- Von: gstreamer-devel <[hidden email]> Im Auftrag von ToanVnET Gesendet: Dienstag, 1. September 2020 06:07 An: [hidden email] Betreff: Re: AW: AW: AW: Video break when using with splitmuxsink Hi, This is my code simple version: static gchar* cb_FormatLocation(GstElement* splitmuxsink, guint fragment_id, const int* offset){ //Set filename return filename; } gboolean timeout_callback(gpointer data){ if ( //meet signal stop video ){ g_main_loop_quit((GMainLoop*)data); return FALSE; } return TRUE; } int main(int argc, char * argv[]){ GstElement *pipeline, *source, *frameratefilter_, *h264parse, *encoder, *splitmuxsink; /* Initialize GStreamer */ gst_init (&argc, &argv); loop = g_main_loop_new ( NULL , FALSE ); /* Create the empty pipeline */ pipeline = gst_pipeline_new ("test-pipeline"); /* Create the elements */ source = gst_element_factory_make ("imxv4l2src", NULL); h264parse = gst_element_factory_make("h264parse",NULL); encoder = gst_element_factory_make("vpuenc_h264",NULL); frameratefilter = gst_element_factory_make("capsfilter", NULL); splitmuxsink = gst_element_factory_make("splitmuxsink", NULL); // Set parameters for some elements g_object_set(G_OBJECT(source), "device", "/dev/video0", NULL); g_object_set(G_OBJECT(splitmuxsink), "location", filename, NULL); g_object_set(G_OBJECT(splitmuxsink), "max-size-time", nanoDuration, NULL); g_object_set(G_OBJECT(splitmuxsink), "async-handling", 1, NULL); g_signal_connect (G_OBJECT(splitmuxsink), "format-location", G_CALLBACK(cb_FormatLocation), &offset); g_object_set(G_OBJECT(frameratefilter_write), "caps", gst_caps_from_string("video/x-raw,format= (string)NV12,width=640,height=480,framerate=(fraction)30/1"), NULL); /* Build the pipeline */ gst_bin_add_many (GST_BIN (pipeline), source, overlay, frameratefilter, encoder, h264parse, splitmuxsink, NULL); if ( gst_element_link_many(source, overlay, frameratefilter, encoder, h264parse, splitmuxsink, NULL) != TRUE ){ g_error("Failed to link save elements!"); gst_object_unref (pipeline); return -1; } /* Start playing */ ret = gst_element_set_state (pipeline, GST_STATE_PLAYING); if (ret == GST_STATE_CHANGE_FAILURE) { g_printerr ("Unable to set the pipeline to the playing state.\n"); gst_object_unref (pipeline); return -1; } g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, 1 , timeout_callback , loop, NULL); g_main_loop_run (loop); g_main_loop_unref(loop); bus = gst_element_get_bus (pipeline); gst_element_send_event(source, gst_event_new_eos()); gst_element_send_event(tee, gst_event_new_eos()); gst_element_send_event(queue_write, gst_event_new_eos()); gst_element_set_state (splitmuxsink, GST_STATE_PAUSED); gst_element_set_state (splitmuxsink, GST_STATE_READY); gst_element_set_state (splitmuxsink, GST_STATE_NULL); gst_element_send_event(splitmuxsink, gst_event_new_eos()); gst_element_send_event(frameratefilter, gst_event_new_eos()); gst_element_send_event(encoder, gst_event_new_eos()); gst_element_send_event(h264parse, gst_event_new_eos()); gst_element_send_event(pipeline, gst_event_new_eos()); gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); return 0; } -- Sent from: https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgstreamer-devel.966125.n4.nabble.com%2F&data=02%7C01%7C%7C2721801169704c30c8df08d84e361e82%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637345341626441390&sdata=aaAA9bWel4KzwX%2FiaoygpFDWzdVCuyuRpG03werSB2o%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fgstreamer-devel&data=02%7C01%7C%7C2721801169704c30c8df08d84e361e82%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637345341626441390&sdata=kPnKPmx3TRuZMzKsSL0AobqnrHxx7CP%2B5rOXYCt2QxE%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi, I tried add the message handler but it's like C++ and I'm using C. And I
built with error: error: expected '=', ',', ';', 'asm' or '__attribute__' before '::' token I quite new in Gstreamer. So may you guide me how to use this message handler ? I very appreciate that. -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
the code where you call gst_element_send_event(pipeline, gst_event_new_eos()); is in a different thread from the streaming thread which calls your message handler. It should not be a problem in C to wait in the calling thread until EOS is reported in the streaming thread. I just listed the various possibilities in C++ but setting a variable in one thread and looping in the other thread until the variable is set should also be possible in plain vanilla C. Gruesse -----Ursprüngliche Nachricht----- Von: gstreamer-devel <[hidden email]> Im Auftrag von ToanVnET Gesendet: Dienstag, 1. September 2020 10:09 An: [hidden email] Betreff: Re: AW: AW: AW: AW: Video break when using with splitmuxsink Hi, I tried add the message handler but it's like C++ and I'm using C. And I built with error: error: expected '=', ',', ';', 'asm' or '__attribute__' before '::' token I quite new in Gstreamer. So may you guide me how to use this message handler ? I very appreciate that. -- Sent from: https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgstreamer-devel.966125.n4.nabble.com%2F&data=02%7C01%7C%7Ccf14fc3a0d36408ce86a08d84e579ea6%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637345485513049696&sdata=l3Y28mpM%2FJWsjCRhLh5gNmIS6H8ApG4O1sV%2BI3IomNA%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fgstreamer-devel&data=02%7C01%7C%7Ccf14fc3a0d36408ce86a08d84e579ea6%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637345485513049696&sdata=JFMoVV4yEpjvDtulEH9uIjGiZyrsjL7grp9jCSe0hJE%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
The information you post is very helpful. I also think send eos event will
not effect critically. Before that, I use filesink element instead of splitmuxsink. I send eos event to pipeline and video is still playable. But with splitmuxsink, I can't do that. In my case, may you can give me some keyword and relevant code, function in details. It helps me a lots. I tried to solved this problem in 3 days and my brain is going to burn out. -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
can you run your pipeline with GST_DEBUG=GST_EVENT*:4 set. Gruesse -----Ursprüngliche Nachricht----- Von: gstreamer-devel <[hidden email]> Im Auftrag von ToanVnET Gesendet: Dienstag, 1. September 2020 12:23 An: [hidden email] Betreff: Re: AW: AW: AW: AW: AW: Video break when using with splitmuxsink The information you post is very helpful. I also think send eos event will not effect critically. Before that, I use filesink element instead of splitmuxsink. I send eos event to pipeline and video is still playable. But with splitmuxsink, I can't do that. In my case, may you can give me some keyword and relevant code, function in details. It helps me a lots. I tried to solved this problem in 3 days and my brain is going to burn out. -- Sent from: https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgstreamer-devel.966125.n4.nabble.com%2F&data=02%7C01%7C%7C1eeba6fa7dd445ab61ff08d84e6accbc%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637345567886366152&sdata=fc31v7axIztdIsizFNJTOHj1aJjJl7tMgE2q%2BFKRxpM%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fgstreamer-devel&data=02%7C01%7C%7C1eeba6fa7dd445ab61ff08d84e6accbc%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637345567886366152&sdata=fiDwV6UVn%2FhB%2BN2%2FaeWPYNxIsOFQtKJomOyNbkXZSV0%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Yes. I can.
This is debug output level 4: [I cut some duplicate content] ====== IMXV4L2SRC: 4.1.6 build on Aug 17 2020 17:13:43. ====== 0:00:00.403524667 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.403896667 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<imxv4l2src0:src> Received event on flushing pad. Discarding 0:00:00.407062000 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.407375333 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<capsfilter0:src> Received event on flushing pad. Discarding 0:00:00.408146333 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.408408333 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<vpuenc_h264-0:src> Received event on flushing pad. Discarding 0:00:00.410748333 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.411112333 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<multiqueue:src_0> Received event on flushing pad. Discarding 0:00:00.411956333 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.413363667 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<h264parse0:src> Received event on flushing pad. Discarding 0:00:00.414714000 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.415053667 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<muxer:src> Received event on flushing pad. Discarding [INFO] Product Info: i.MX6Q/D/S ====== VPUENC: 4.1.6 build on Aug 17 2020 17:13:59. ====== wrapper: 1.0.68 (VPUWRAPPER_ARM_LINUX Build on Aug 17 2020 15:52:15) vpulib: 5.4.35 firmware: 3.1.1.570363 ... 0:00:00.573036000 20016 0x56088e40 INFO GST_EVENT gstevent.c:1253:gst_event_new_latency: creating latency event 0:00:00.000000000 0:00:00.578725333 20016 0x560478f0 INFO GST_EVENT gstevent.c:679:gst_event_new_caps: creating caps event video/x-raw, format=(string)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1 0:00:01.393626000 20016 0x560478f0 INFO GST_EVENT gstevent.c:760:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999 [INFO] ringBufferEnable 0, chromaInterleave 1, mapType 0, linear2TiledEnable 0 [WARN] VPU iram is less than needed, some parts don't use iram 0:00:01.803796667 20016 0x560478f0 INFO GST_EVENT gstevent.c:679:gst_event_new_caps: creating caps event video/x-h264, width=(int)1280, height=(int)720, stream-format=(string)avc, alignment=(string)au, framerate=(fraction)30/1, codec_data=(buffer)0142401fffe100096742401fa6805005b901000468ce3880, pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true, profile=(string)constrained-baseline, level=(string)3.1 0:00:01.805094333 20016 0x560478f0 INFO GST_EVENT gstevent.c:760:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999 0:00:02.731437000 20016 0x56047a90 INFO GST_EVENT gstevent.c:679:gst_event_new_caps: creating caps event video/quicktime, variant=(string)iso 0:00:02.743947000 20016 0x56047a90 INFO GST_EVENT gstevent.c:760:gst_event_new_segment: creating segment event bytes segment start=0, offset=0, stop=-1, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0, base=0, position 0, duration -1 0:00:13.122608001 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<splitmuxsink0:video> Received event on flushing pad. Discarding And this is debug output level 5 when I stop the pipeline: 0:00:14.927594335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b170 eos 28174 0:00:14.946297335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b128 eos 28174 0:00:14.946422335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b0e0 eos 28174 0:00:14.946506335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b098 eos 28174 0:00:14.946583668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b050 eos 28174 0:00:14.946658002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b008 eos 28174 0:00:14.946733335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6af60 eos 28174 0:00:14.946809002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6af60 eos 28174 0:00:14.946920002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b008 eos 28174 0:00:14.949387668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b050 eos 28174 0:00:14.949892002 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<splitmuxsink0:video> have event type eos event: 0x55b6b050, time 99:99:99.999999999, seq-num 8610, (NULL) 0:00:14.950435002 20227 0x55ce3e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<splitmuxsink0:video> Received event on flushing pad. Discarding 0:00:14.951042002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b098 eos 28174 0:00:14.951594668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<capsfilter0:sink> have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.951859002 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<vpuenc_h264-0:sink> have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.952538668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<h264parse0:sink> have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.950342002 20227 0x55ca28f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<textoverlay:video_sink> have event type eos event: 0x55b6b170, time 99:99:99.999999999, seq-num 8587, (NULL) 0:00:14.953315335 20227 0x55ca28f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<capsfilter0:sink> have event type eos event: 0x55b6b170, time 99:99:99.999999999, seq-num 8587, (NULL) 0:00:14.953753335 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<splitmuxsink0:video> have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.953990335 20227 0x55ce3e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<splitmuxsink0:video> Received event on flushing pad. Discarding 0:00:14.954883668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b0e0 eos 28174 0:00:14.955373668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<vpuenc_h264-0:sink> have event type eos event: 0x55b6b0e0, time 99:99:99.999999999, seq-num 8612, (NULL) 0:00:14.956013335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b128 eos 28174 0:00:14.956592668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<h264parse0:sink> have event type eos event: 0x55b6b128, time 99:99:99.999999999, seq-num 8613, (NULL) 0:00:14.957167002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b1b8 eos 28174 Thank you for your help. I very appreciate that ! -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
remove the code where you send eos to the individual elements leaving only the line in which you send the eos to the pipeline. When you then look at the debug output you should see that the first element in the pipeling gets the eos first and that the downstream elements follow. Gruesse -----Ursprüngliche Nachricht----- Von: gstreamer-devel <[hidden email]> Im Auftrag von ToanVnET Gesendet: Mittwoch, 2. September 2020 19:24 An: [hidden email] Betreff: Re: AW: AW: AW: AW: AW: AW: Video break when using with splitmuxsink Yes. I can. This is debug output level 4: [I cut some duplicate content] ====== IMXV4L2SRC: 4.1.6 build on Aug 17 2020 17:13:43. ====== 0:00:00.403524667 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.403896667 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<imxv4l2src0:src> Received event on flushing pad. Discarding 0:00:00.407062000 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.407375333 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<capsfilter0:src> Received event on flushing pad. Discarding 0:00:00.408146333 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.408408333 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<vpuenc_h264-0:src> Received event on flushing pad. Discarding 0:00:00.410748333 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.411112333 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<multiqueue:src_0> Received event on flushing pad. Discarding 0:00:00.411956333 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.413363667 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<h264parse0:src> Received event on flushing pad. Discarding 0:00:00.414714000 20016 0x56088e40 INFO GST_EVENT gstevent.c:1382:gst_event_new_reconfigure: creating reconfigure event 0:00:00.415053667 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<muxer:src> Received event on flushing pad. Discarding [INFO] Product Info: i.MX6Q/D/S ====== VPUENC: 4.1.6 build on Aug 17 2020 17:13:59. ====== wrapper: 1.0.68 (VPUWRAPPER_ARM_LINUX Build on Aug 17 2020 15:52:15) vpulib: 5.4.35 firmware: 3.1.1.570363 ... 0:00:00.573036000 20016 0x56088e40 INFO GST_EVENT gstevent.c:1253:gst_event_new_latency: creating latency event 0:00:00.000000000 0:00:00.578725333 20016 0x560478f0 INFO GST_EVENT gstevent.c:679:gst_event_new_caps: creating caps event video/x-raw, format=(string)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1 0:00:01.393626000 20016 0x560478f0 INFO GST_EVENT gstevent.c:760:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999 [INFO] ringBufferEnable 0, chromaInterleave 1, mapType 0, linear2TiledEnable 0 [WARN] VPU iram is less than needed, some parts don't use iram 0:00:01.803796667 20016 0x560478f0 INFO GST_EVENT gstevent.c:679:gst_event_new_caps: creating caps event video/x-h264, width=(int)1280, height=(int)720, stream-format=(string)avc, alignment=(string)au, framerate=(fraction)30/1, codec_data=(buffer)0142401fffe100096742401fa6805005b901000468ce3880, pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true, profile=(string)constrained-baseline, level=(string)3.1 0:00:01.805094333 20016 0x560478f0 INFO GST_EVENT gstevent.c:760:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999 0:00:02.731437000 20016 0x56047a90 INFO GST_EVENT gstevent.c:679:gst_event_new_caps: creating caps event video/quicktime, variant=(string)iso 0:00:02.743947000 20016 0x56047a90 INFO GST_EVENT gstevent.c:760:gst_event_new_segment: creating segment event bytes segment start=0, offset=0, stop=-1, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0, base=0, position 0, duration -1 0:00:13.122608001 20016 0x56088e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<splitmuxsink0:video> Received event on flushing pad. Discarding And this is debug output level 5 when I stop the pipeline: 0:00:14.927594335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b170 eos 28174 0:00:14.946297335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b128 eos 28174 0:00:14.946422335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b0e0 eos 28174 0:00:14.946506335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b098 eos 28174 0:00:14.946583668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b050 eos 28174 0:00:14.946658002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b008 eos 28174 0:00:14.946733335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6af60 eos 28174 0:00:14.946809002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6af60 eos 28174 0:00:14.946920002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b008 eos 28174 0:00:14.949387668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b050 eos 28174 0:00:14.949892002 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<splitmuxsink0:video> have event type eos event: 0x55b6b050, time 99:99:99.999999999, seq-num 8610, (NULL) 0:00:14.950435002 20227 0x55ce3e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<splitmuxsink0:video> Received event on flushing pad. Discarding 0:00:14.951042002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b098 eos 28174 0:00:14.951594668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<capsfilter0:sink> have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.951859002 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<vpuenc_h264-0:sink> have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.952538668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<h264parse0:sink> have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.950342002 20227 0x55ca28f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<textoverlay:video_sink> have event type eos event: 0x55b6b170, time 99:99:99.999999999, seq-num 8587, (NULL) 0:00:14.953315335 20227 0x55ca28f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<capsfilter0:sink> have event type eos event: 0x55b6b170, time 99:99:99.999999999, seq-num 8587, (NULL) 0:00:14.953753335 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<splitmuxsink0:video> have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.953990335 20227 0x55ce3e40 INFO GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:<splitmuxsink0:video> Received event on flushing pad. Discarding 0:00:14.954883668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b0e0 eos 28174 0:00:14.955373668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<vpuenc_h264-0:sink> have event type eos event: 0x55b6b0e0, time 99:99:99.999999999, seq-num 8612, (NULL) 0:00:14.956013335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b128 eos 28174 0:00:14.956592668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<h264parse0:sink> have event type eos event: 0x55b6b128, time 99:99:99.999999999, seq-num 8613, (NULL) 0:00:14.957167002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b1b8 eos 28174 Thank you for your help. I very appreciate that ! -- Sent from: https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgstreamer-devel.966125.n4.nabble.com%2F&data=02%7C01%7C%7Cb8371df66ec146031da308d84f6e598b%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637346682648934817&sdata=sSYHyvkAD6bVg3UlEA63eZnZhrL0URDtlB3n6CgoE38%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fgstreamer-devel&data=02%7C01%7C%7Cb8371df66ec146031da308d84f6e598b%7C28042244bb514cd680347776fa3703e8%7C1%7C0%7C637346682648934817&sdata=jzWiStlqtdDf%2F61fXulC8ZSFgiCBX%2BwSGet0G%2Fsbm3o%3D&reserved=0 _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
This post was updated on .
Hi,
This is the code after modify: g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, 1 , timeout_callback , loop, NULL); g_main_loop_run (loop); g_main_loop_unref(loop); bus = gst_element_get_bus (pipeline); gst_element_send_event(pipeline, gst_event_new_eos()); msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,GST_MESSAGE_ERROR | GST_MESSAGE_EOS); if (msg != NULL){ gst_message_unref (msg); } gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); And this is debug output after EOS event sent: 0:00:07.159878001 3540 0x55fa1e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55e29170 eos 28174 0:00:07.175796001 3540 0x55f608f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<textoverlay:video_sink> have event type eos event: 0x55e29170, time 99:99:99.999999999, seq-num 3317, (NULL) 0:00:07.176252335 3540 0x55f608f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<capsfilter0:sink> have event type eos event: 0x55e29170, time 99:99:99.999999999, seq-num 3317, (NULL) 0:00:07.176545668 3540 0x55f608f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<vpuenc_h264-0:sink> have event type eos event: 0x55e29170, time 99:99:99.999999999, seq-num 3317, (NULL) 0:00:07.177118335 3540 0x55f608f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<h264parse0:sink> have event type eos event: 0x55e29170, time 99:99:99.999999999, seq-num 3317, (NULL) 0:00:07.177668668 3540 0x55f608f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<splitmuxsink0:video> have event type eos event: 0x55e29170, time 99:99:99.999999999, seq-num 3317, (NULL) 0:00:07.178213668 3540 0x55f608f0 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:<multiqueue:sink_0> have event type eos event: 0x55e29170, time 99:99:99.999999999, seq-num 3317, (NULL) And my app is still hang on there. What should I do next ? -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list gstreamer-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |