Webm header data

Lee Matthews lma at spaceapplications.com
Mon Jun 30 11:16:46 PDT 2014

Thanks Sebastian, ok I got it to work by getting streamheader and writing it to the file before filesink starts writing to the file (filesink is set to append in order to avoid writing over the streamheader). The below is my code, in case this could help anyone else.



		// Get the caps of the tee element's pad
		caps = gst_pad_query_caps (pad,NULL);

		// Print the caps
		gchar *capsstr; 
		capsstr = gst_caps_to_string (gst_pad_get_current_caps(pad));
		g_print ("caps: %s\n", capsstr); 
		g_free (capsstr); 

		// Get the streamheader information
		structure = gst_caps_get_structure (caps, 0);
		streamheader = gst_structure_get_value (structure, "streamheader");

			g_print("No valid value!");

		bufarr = g_value_peek_pointer (streamheader);
		// Get the data at the first position within the array	
		GValue *bufval = &g_array_index (bufarr, GValue, 0);

		// Check type of array content
		if (G_VALUE_TYPE (bufval) != GST_TYPE_BUFFER) 
			g_print("Not GST_TYPE_BUFFER type!");

		buf = g_value_peek_pointer (bufval); // Get pointer to buffer
		// Get a pointer to the streamheader data and get its size
		if (gst_buffer_map (buf, &map, GST_MAP_READ)) 
			g_print("streamheader memory dump\n");  			
			gst_util_dump_mem (map.data, map.size);

			/* Write buffer to disk. */
			pFile = fopen("/data/data/com.mobinet.mobinetbootapp/files/test.webm","wb");

			if (pFile)
				fwrite(map.data, map.size, 1, pFile);
				g_print("Wrote to file!\n");
				g_print("Something wrong writing to File.\n");

	  		gst_buffer_unmap (buf, &map); 
			g_print("streamheader buffer map FAIL\n");  

		// Add elements
		g_print ("ADDING ELEMENTS!\n");
		queue = gst_element_factory_make ("queue", NULL);
		filesink = gst_element_factory_make ("filesink", NULL);

		g_object_set (filesink, "append", TRUE, NULL);
		g_object_set (filesink, "location", "/data/data/com.mobinet.mobinetbootapp/files/test.webm", NULL);

----- Original Message -----
From: "Sebastian Dröge" <sebastian at centricular.com>
To: "Discussion of the development of and with GStreamer" <gstreamer-devel at lists.freedesktop.org>
Sent: Friday, 27 June, 2014 5:01:54 PM
Subject: Re: Webm header data

On Fr, 2014-06-27 at 16:41 +0200, Lee Matthews wrote:
> Thanks Sebastian. Do you have any suggestions as to how I may save my video stream to disk?
> I presume I'd have the same problem if I used ogg theora instead of vp8 webm ?

You could get the caps before linking in the filesink, then first send
the streamheaders buffer and then link it into the pipeline.

You'll have the same problem with Ogg, it works exactly the same way

Sebastian Dröge, Centricular Ltd - http://www.centricular.com
Expertise, Straight from the Source

gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org

More information about the gstreamer-devel mailing list