Search code examples
jpeggstreamergstreamer-1.0

Gstreamer video sink from Binary image data using Gstreamer


The Question is similar to what is asked in image data as source in gstreamer

Here is what my requirement :
1. There is a binary file[consider it as any extension] which contains multiple image data [say 10 image data in one binary file]
2. The binary file is extracted and the image data(s) are saved to a folder location in windows as .jpg
3. For video display I used the below pipeline gst-launch-1.0 multifilesrc location=":/Images/%d.jpg" caps="image/jpeg,framerate=10/5" ! jpegdec ! autovideosink
          ** Under Images folder, there are .jpg files stored with names starting from 1.jpg, 2.jpg etc.. . The %d would take the images from the path starting index from 1 to the highest count of value [continuously numbered images]

Everything looks fine till here. Now the requirement is to skip the step #2, i.e we don't need to convert the image binary data to be stored in a physical drive path as image files. Instead, we are looking for something like passing the binary data that is extracted from the binary file directly as a source pad to the GStreamer pipeline. Is this possible ? If so, how should I write the source pad for the pipeline ?

Reason : There are as much as 32 GB data in the binary file [these are webcam images compressed in binary file ], so saving these data again to image format is another 32 GB space required in the drive [and this goes on and on]. Since we already have the image data in binary format, we need a mechanism to pass these binary data [in the form of buffer in C programming] directly to GStreamer pipeline source.

Note : gstreamer 1.0 is used in windows OS


Solution

  • First question would be why you are not saving video data in a video file format - for that exact purpose..

    You can write a GStreamer application with an appsrc. You would then have to parse the data as you do in step 2) in your application and feed the image chunks via appsrc to the jpegdec.