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

Nicolas Dufresne nicolas at ndufresne.ca
Wed Aug 2 22:09:52 UTC 2023


Hi,

Le mar. 1 août 2023, 03 h 15, geysee via gstreamer-devel <
gstreamer-devel at lists.freedesktop.org> a écrit :

> 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?


It can be a good method. But from what you described below, you may get
easier results with concat element instead. splitmuxsrc should work, there
is a signal to query the filename from your app instead of using the glob.


>
> 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/20230802/465e100c/attachment-0001.htm>


More information about the gstreamer-devel mailing list