[gst-devel] Re : Changing file location during recording
Albert Costa
costa_albert at yahoo.fr
Thu Jun 17 14:16:17 CEST 2010
Hi,
thanks a lot to all people, this works fine!
Now my only concern left is to be able to reset the timestamps (start again at 0) when changing the file. Currently when I apply this solution, timestamps continue to increase (for example 0 to 2 seconds in first file, then 2 to 4 seconds in the second file when I change it).
I've tried to put a homemade plugin that offsets the timestamps back to 0 when I change the file (changing my branch to tee0. ! queue ! offsetplugin ! ffenc ! mpgtsmux ! filesink). But it seems it doen't work well: even doing that, dumping the timestamps of the second file starts at 2 seconds (with this example).
Regards,
Al
________________________________
De : Edward Hervey <bilboed at gmail.com>
À : Discussion of the development of GStreamer <gstreamer-devel at lists.sourceforge.net>
Envoyé le : Jeu 17 juin 2010, 8h 36min 15s
Objet : Re: [gst-devel] Changing file location during recording
On Wed, 2010-06-16 at 16:27 +0000, Albert Costa wrote:
> Hi,
> I have a pipeline that can be reducted to:
>
>
> gst-launch dshowvideosrc ! tee ! queue ! ffmpegcolorspace !
> ffenc_mpeg2video ! mpegtsmux ! filesink tee0. ! queue !
> ffmpegcolorspace ! directdrawsink
>
>
> All this is created/handled in a c application where I can start and
> stop the pipeline. I now have a requirement to change the location of
> the file after a given size (for example) is reached. I've started to
> test following sequence on user request for the moment:
> -set pipeline to paused
> -change filesink location
> -set back pipeline to playing
> But it seems it does not handle the change of location in the
> filesink. I've also tried to unlink/relink the filesink branch in
> combination with the state change, with no success.
> Is there a way to change dynamically the filesink location, either by
> external commands (like I tried) or even better automatically with a
> plugin I am maybe not aware of?
You want to, when no data is flowing : set the filesink to the NULL
state, change the location, bring back the filesink to the PLAYING
state. To ensure no data is flowing, use the gst_pad_set_blocked_async()
method on the pad feeding data to your filesink.
* Grab the mpegtsmux source pad and
gst_pad_set_blocked_async(sourcepad, TRUE, my_blocked_callback,
filesink);
* In your my_blocked_callback:
** WHEN blocked is TRUE:
*** set filesink to NULL,
*** change the location property of filesink,
*** set filesink to PLAYING,
*** and finally call gst_pad_set_blocked_async(sourcepad, FALSE,
my_blocked_callback, NULL);
Edward
P.S. You can only do this with container formats that don't have headers
(like mpeg-ts). There might also be quirks about the PMT/PAT not being
present at the beginning of the second file.
> Thanks for help,
> Regards,
> Al
>
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit. See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________ gstreamer-devel mailing list gstreamer-devel at lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20100617/6408590b/attachment.htm>
More information about the gstreamer-devel
mailing list