GES 1.12 -- Multiple encodings to multiple files

Thibault Saunier tsaunier at gnome.org
Tue Jul 3 23:37:53 UTC 2018


Why do you think you need to access the composition?
On Tue, Jul 3, 2018 at 7:22 PM David Ing <ding at panopto.com> wrote:
>
> Thanks Thibault.
>
> Unfortunetly I would need a method which is not exposed through the headers:  ges_track_get_composition  ... I will need to pull in code from the *.c files to implement the method on my end ... a dirty deed indeed.
>
>
> On Mon, Jul 2, 2018 at 10:05 AM, Thibault Saunier <tsaunier at gnome.org> wrote:
>>
>> Hello David,
>>
>> There should be no problem using a GstPipeline as long as you make
>> sure to connect to the query-position signal of each track, I do not
>> think there is any other quirk but I might be misremembering :-)
>>
>> With the GESPipeline API I do not see a clean way to do what you want
>> so I believe your best bet is to just use a GstPipeline.
>>
>> Regards,
>>
>> Thibault
>> On Mon, Jul 2, 2018 at 12:41 PM David Ing <ding at panopto.com> wrote:
>> >
>> > I sent the original message on this thread Friday evening (US Pacific Time) ... chances are that most people never saw it, so I'm trying again:
>> >
>> > On a prior email thread, it was suggested that GESTimeline and GstPipeline are not 100% compatible with each other:  https://lists.freedesktop.org/archives/gstreamer-devel/2018-March/067349.html
>> >
>> > >     The GES timeline can indeed be used in a regular gstreamer pipeline, but there
>> > >     are some undocumented quirks, amongst them the "query-position" signal emitted
>> > >     by the NLEComposition wrapped by the GESTrack object, this is why using GESPipeline
>> > >     is the recommended approach.
>> >
>> >
>> > I am now in the position of being forced to use the GstPipeline with the GESTimeline (for reasons described in the first message of this thread).  I wonder if anybody can shed some light on the problems that I might see, and provide a hint about how I might overcome them.  I am working in C / C++ so I have a lot of options, but I would benefit from a little guidance.
>> >
>> >
>> > On Fri, Jun 29, 2018 at 4:24 PM, David Ing <ding at panopto.com> wrote:
>> >>
>> >> To partially answer my own question:  I think I need to use a GstPipeline rather than a GESPipeline (so I can have full control over the GstElements which do the encoding and writing to files).
>> >>
>> >> On another email thread, it was suggested that GESTimeline and GstPipeline are not 100% compatible with each other:  https://lists.freedesktop.org/archives/gstreamer-devel/2018-March/067349.html
>> >>
>> >> >     The GES timeline can indeed be used in a regular gstreamer pipeline, but there
>> >> >     are some undocumented quirks, amongst them the "query-position" signal emitted
>> >> >     by the NLEComposition wrapped by the GESTrack object, this is why using GESPipeline
>> >> >     is the recommended approach.
>> >>
>> >>
>> >> If I use GESTimeline with GstPipeline, what kinds of trouble can I expect?
>> >>
>> >> On Fri, Jun 29, 2018 at 1:32 PM, David Ing <ding at panopto.com> wrote:
>> >>>
>> >>> I am using GES 1.12 and I am trying to build a single GESPipeline with a somewhat complicated set of outputs.  I am coding in C++ (using gstreamer headers and libs).
>> >>>
>> >>> Consider a representative example:
>> >>>
>> >>> I have built a GESTimeline which sits inside a GESPipeline.
>> >>>
>> >>> I want to generate multiple encodings.
>> >>>
>> >>> Low quality video AVC (h.264)
>> >>> Mid quality video AVC (h.264)
>> >>> High quality video AVC (h.264)
>> >>> High quality audio AAC
>> >>>
>> >>> I want to shunt these encodings into multiple containers.
>> >>>
>> >>> HLS folder (all encodings)
>> >>> MP4 high quality (encodings 3 & 4)
>> >>> MP4 mid quality (encodings 2 & 4)
>> >>>
>> >>> Presumably, the most efficient approach (computationally) is to use a single pipeline for all of this.  Computational efficiency is of paramount importance to me.
>> >>>
>> >>> My question is:  What approach should I take?
>> >>>
>> >>> One approach is to manually construct the GstElements I need for encoding and muxing, and connect them together in the appropriate way within the GESPipeline (I guess they would source directly from the sinks on the GESTimeline).  Is that the correct approach?  Or is there another approach that will work better?
>> >>>
>> >>> Guidance is appreciated.
>> >>
>> >>
>> >
>> > _______________________________________________
>> > gstreamer-devel mailing list
>> > gstreamer-devel at lists.freedesktop.org
>> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


More information about the gstreamer-devel mailing list