End Of stream issue while playing mp4 file

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

End Of stream issue while playing mp4 file

ebrahim
Hi,
The issue i am facing is , Iam not able to playback the mp4 file created . The code is shown below.
This issue is happen when i use mp4mux.
Instead of using mp4mux if i use mpegtsmux (currently commented) then i am able to playback the recorded video.

Another thing i have noticed is if i use videotestsrc with mp4mux, then  i am able to playback the recorded video.


#include <gst/gst.h>
#include <unistd.h>

int main(int argc, char *argv[]) {

        GstElement *pipeline, *source, *capsfilter, *h264parse, *mux, *sink, *encoder;
        // GstBus *bus;
        // GstMessage *msg;
        // GstPad *blockpad;
        GstCaps *Cap;
        gst_init (NULL,NULL);
        Cap = gst_caps_from_string("video/x-h264,stream-format=(string)byte-stream,width=320,height=240,framerate=30/1");

        //source = gst_element_factory_make("videotestsrc","source");
        source = gst_element_factory_make("v4l2src","source");
        capsfilter = gst_element_factory_make("capsfilter","caps");
        h264parse = gst_element_factory_make("h264parse","h264parse");
        // mux = gst_element_factory_make("mpegtsmux","mux");
        mux = gst_element_factory_make("mp4mux","mux");
        sink = gst_element_factory_make("filesink","sink");
        encoder = gst_element_factory_make("x264enc","encoder");
        g_object_set(G_OBJECT(source), "num-buffers",300, NULL);
       
        g_object_set(sink, "location" , "test1.mp4",NULL);


        g_object_set(capsfilter,"caps",Cap,NULL);
        pipeline = gst_pipeline_new("test-pipeline");

        gst_bin_add_many(GST_BIN(pipeline), source,encoder,capsfilter,h264parse,mux,sink,NULL);


        gst_element_link_many(source,encoder,capsfilter,h264parse,mux,sink,NULL);

        gst_element_set_state (pipeline, GST_STATE_PLAYING);
        GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "stream_graph_file");
        sleep(8);

        gst_element_send_event(source, gst_event_new_eos ());
        gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL);

        gst_object_unref(GST_OBJECT(pipeline));
        return 0;

}

vlc test1.mp4
VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28)
[0x1af7118] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9f54c21280] moov atom not found
[0x7f9f54c21a18] mp4 demux error: MP4 plugin discarded (no moov,foov,moof box)
[0x7f9f54c21a18] mp4 demux error: MP4 plugin discarded (no moov,foov,moof box)
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9f54002340] moov atom not found
[0x7f9f54c21a18] avformat demux error: Could not open /home/sha/gstreamer/gstreamer/test1.mp4: Unknown error 1094995529




  gst-launch-1.0 filesrc location=test1.mp4 ! decodebin name=dec ! videoconvert ! autovideosink

(gst-plugin-scanner:8543): GStreamer-CRITICAL **: gst_structure_new_empty: assertion 'gst_structure_validate_name (name)' failed
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPipeline:pipeline0/GstDecodeBin:dec/GstQTDemux:qtdemux0: Invalid atom size.
Additional debug info:
isomp4/1.2/qtdemux.c(3064): gst_qtdemux_loop_state_header (): /GstPipeline:pipeline0/GstDecodeBin:dec/GstQTDemux:qtdemux0:
Header atom 'mdat' has empty length
ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:dec/GstQTDemux:qtdemux0: This file contains no playable streams.
Additional debug info:
isomp4/1.2/qtdemux.c(577): gst_qtdemux_post_no_playable_stream_error (): /GstPipeline:pipeline0/GstDecodeBin:dec/GstQTDemux:qtdemux0:
no known streams found
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
Reply | Threaded
Open this post in threaded view
|

AW: End Of stream issue while playing mp4 file

Thornton, Keith
Hi, you have to wait for EOS to reach the filesink. When you have received the EOS Message, the MP4 file is complete. Then you can stop your pipeline.

-----Ursprüngliche Nachricht-----
Von: gstreamer-devel [mailto:[hidden email]] Im Auftrag von ebrahim
Gesendet: Freitag, 18. November 2016 13:26
An: [hidden email]
Betreff: End Of stream issue while playing mp4 file

Hi,
The issue i am facing is , Iam not able to playback the mp4 file created .
The code is shown below.
This issue is happen when i use mp4mux.
Instead of using /mp4mux/ if i use /mpegtsmux/ (currently commented) then i am able to playback the recorded video.

Another thing i have noticed is if i use videotestsrc with mp4mux, then  i am able to playback the recorded video.

/
#include <gst/gst.h>
#include <unistd.h>

int main(int argc, char *argv[]) {

        GstElement *pipeline, *source, *capsfilter, *h264parse, *mux, *sink, *encoder;
        // GstBus *bus;
        // GstMessage *msg;
        // GstPad *blockpad;
        GstCaps *Cap;
        gst_init (NULL,NULL);
        Cap =
gst_caps_from_string("video/x-h264,stream-format=(string)byte-stream,width=320,height=240,framerate=30/1");

        //source = gst_element_factory_make("videotestsrc","source");
        source = gst_element_factory_make("v4l2src","source");
        capsfilter = gst_element_factory_make("capsfilter","caps");
        h264parse = gst_element_factory_make("h264parse","h264parse");
        // mux = gst_element_factory_make("mpegtsmux","mux");
        mux = gst_element_factory_make("mp4mux","mux");
        sink = gst_element_factory_make("filesink","sink");
        encoder = gst_element_factory_make("x264enc","encoder");
        g_object_set(G_OBJECT(source), "num-buffers",300, NULL);
       
        g_object_set(sink, "location" , "test1.mp4",NULL);


        g_object_set(capsfilter,"caps",Cap,NULL);
        pipeline = gst_pipeline_new("test-pipeline");

        gst_bin_add_many(GST_BIN(pipeline),
source,encoder,capsfilter,h264parse,mux,sink,NULL);


        gst_element_link_many(source,encoder,capsfilter,h264parse,mux,sink,NULL);

        gst_element_set_state (pipeline, GST_STATE_PLAYING);
        GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "stream_graph_file");
        sleep(8);

        gst_element_send_event(source, gst_event_new_eos ());
        gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL);

        gst_object_unref(GST_OBJECT(pipeline));
        return 0;

}/
vlc test1.mp4
VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28) [0x1af7118] main libvlc: Running vlc with the default interface. Use 'cvlc'
to use vlc without interface.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9f54c21280] moov atom not found [0x7f9f54c21a18] mp4 demux error: MP4 plugin discarded (no moov,foov,moof
box)
[0x7f9f54c21a18] mp4 demux error: MP4 plugin discarded (no moov,foov,moof
box)
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9f54002340] moov atom not found [0x7f9f54c21a18] avformat demux error: Could not open
/home/sha/gstreamer/gstreamer/test1.mp4: Unknown error 1094995529




  gst-launch-1.0 filesrc location=test1.mp4 ! decodebin name=dec !
videoconvert ! autovideosink

(gst-plugin-scanner:8543): GStreamer-CRITICAL **: gst_structure_new_empty:
assertion 'gst_structure_validate_name (name)' failed
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element
/GstPipeline:pipeline0/GstDecodeBin:dec/GstQTDemux:qtdemux0: Invalid atom
size.
Additional debug info:
isomp4/1.2/qtdemux.c(3064): gst_qtdemux_loop_state_header ():
/GstPipeline:pipeline0/GstDecodeBin:dec/GstQTDemux:qtdemux0:
Header atom 'mdat' has empty length
ERROR: from element
/GstPipeline:pipeline0/GstDecodeBin:dec/GstQTDemux:qtdemux0: This file
contains no playable streams.
Additional debug info:
isomp4/1.2/qtdemux.c(577): gst_qtdemux_post_no_playable_stream_error ():
/GstPipeline:pipeline0/GstDecodeBin:dec/GstQTDemux:qtdemux0:
no known streams found
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...




--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/End-Of-stream-issue-while-playing-mp4-file-tp4680763.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel