Is it a good way to separate pipelines in order to dynamically change properties?

s_kamiya at toa.co.jp s_kamiya at toa.co.jp
Tue Aug 1 06:05:43 UTC 2023


Hello
I am Kamiya.

I have a question.

Is it a good way to separate pipelines in order to dynamically change 
properties 
that cannot be changed in the PLAYING state, such as the location property 
in filesrc?

I'm sorry for the long post, but the background of the question is as 
follows.

---------------------------------------------------------------------------------------------------------------------------------
I'm making a system that records video from a network camera while 
dividing it into files.
If the file is split at 10 minute intervals, the file path will be as 
follows.

C:/Rec/2023/07/31/1330_00000.mp4
C:/Rec/2023/07/31/1340_00000.mp4
C:/Rec/2023/07/31/1350_00000.mp4

With gstreamer C++ coding, I am trying to export as a single file by 
specifying the date and time range from the divided recording files.

If the date and time range is in one file, like 13:32 - 13:34, then the 
pipeline below has been successful. (Properties are omitted)

pileline : filesrc ! qtdemux ! h265parse ! queue ! qtmux ! filesink

On the other hand, if the date and time range is split into multiple 
files, like 7/31 20:00 - 8/1 10:00, this pipeline fails.

First, I tried multifilesrc and splitmuxsrc, but the location property is 
a glob pattern, it didn't fit the file path of date and time.
Next, I tried updating the location property of filesrc sequentially, but 
I couldn't change the location when this state is PLAYING.

So now I'm trying to divide the pipeline into two as follows.

pipeline1 : filesrc ! qtdemux ! h265parse ! appsink
pipeline2 : appsrc ! queue ! qtmux ! filesink

When pipeline1 reaches the end of stream, I change the state of pipeline1 
to Ready. 
Next I change the location of filesrc. Finaly I change state to PLAYING 
again.
The State of pipeline2 is not changed.

However this way has not been successful yet. There are more problems than 
single pipeline.

Currently looking into the following issues:
If there was single pipeline it was processed at high speed, but if the 
pipeline is divided, the processing time will be as per the timestamp.

Is it a good way to split the pipeline like this?
I would appreciate if you give me some advice.
---------------------------------------------------------------------------------------------------------------------------------

Best regards,
Kamiya.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20230801/c2018861/attachment.htm>


More information about the gstreamer-devel mailing list