End Of stream issue while playing mp4 file

ebrahim mohamedsha.mec at gmail.com
Fri Nov 18 12:26:27 UTC 2016


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.


More information about the gstreamer-devel mailing list