Re: Is it a good way to separate pipelines in order to dynamically change properties?
Nicolas Dufresne via gstreamer-devel <[email protected]>
| Newsgroups | gmane.comp.video.gstreamer.devel |
|---|---|
| Message-ID | <CAKQmDh8LnUGMptt30+A=oCa4TvPDXPjWZb=PLtb2RSR8_nqKyA@mail.gmail.com> |
Hi, Le mar. 1 août 2023, 03 h 15, geysee via gstreamer-devel < [email protected]> 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.