[gst-devel] Video transitions using gnloperation
Timothy Braun
braunsquared at gmail.com
Tue Jan 4 19:08:24 CET 2011
---------- Forwarded message ----------
From: Timothy Braun <braunsquared at gmail.com>
Date: Tue, Jan 4, 2011 at 1:08 PM
Subject: Re: Video transitions using gnloperation
To: Lane Brooks <lane at brooks.nu>
What do you get when you set GST_DEBUG=2? The pipeline is most likely
freezing because of a caps filter or a pad issue. What is the pipeline
connected to for output?
On Tue, Jan 4, 2011 at 12:56 PM, Lane Brooks <lane at brooks.nu> wrote:
> On 01/04/2011 10:33 AM, Timothy Braun wrote:
>
>> Make sure the gnl input sources have different priorities and set the
>> gnloperations priority to 0.
>>
>
> Thanks for the idea. I tried setting the priority of the op to 0, src1 to
> 1, and src2 to 2. Now when I run it the stream hangs after 2 seconds, which
> is when the gnloperation and src2 are starting up. I did some testing and
> the hanging only occurs if I set the priority on src2 to anything other than
> 0. I can set the priorities on the op and src1 without hanging (it still
> doesn't work, however). Here is my code again with the updates:
>
>
> comp = gst.element_factory_make("gnlcomposition")
> src1 = gst.element_factory_make("gnlfilesource")
> src2 = gst.element_factory_make("gnlfilesource")
>
> comp.add(src1)
> src1.set_property("location", "/test1.mp4")
> src1.set_property("start", 0 * gst.SECOND)
> src1.set_property("duration", 5 * gst.SECOND)
> src1.set_property("media-start", 0 * gst.SECOND)
> src1.set_property("media-duration", 5 * gst.SECOND)
> src1.set_property("priority", 1)
>
>
> comp.add(src2)
> src2.set_property("location", "/test2.mp4")
> src2.set_property("start", 2 * gst.SECOND)
> src2.set_property("duration", 5 * gst.SECOND)
> src2.set_property("media-start", 0 * gst.SECOND)
> src2.set_property("media-duration", 5 * gst.SECOND)
> src2.set_property("priority", 2)
>
>
> op = gst.element_factory_make("gnloperation")
> tran = gst.element_factory_make("smpte")
> tran.set_property("type", 234)
> tran.set_property("duration", 3 * gst.SECOND)
> op.add(tran)
> op.set_property("start", 2 * gst.SECOND)
> op.set_property("duration", 3 * gst.SECOND)
> op.set_property("media-start", 0 * gst.SECOND)
> op.set_property("media-duration", 3 * gst.SECOND)
> op.set_property("priority", 0)
> comp.add(op)
>
> I can get the smpte transition to work correctly on these two streams when
> not using the gnonlin elements, but that is not very interesting as I have
> to run the two streams in parallel.
>
> Any other ideas?
>
> Lane
>
>
>
> On Jan 4, 2011, at 12:01 PM, Lane Brooks<lane at brooks.nu> wrote:
>>
>> On 01/04/2011 05:39 AM, Edward Hervey wrote:
>>>
>>>> On Mon, 2011-01-03 at 23:23 -0700, Lane Brooks wrote:
>>>>
>>>>> I have a gnlcomposition containing two video sources. I would like to
>>>>> apply a smpte transition from one source to the next.
>>>>>
>>>>> I have tried overlapping the two gnlsources by 3 seconds. I then put a
>>>>> 'smpte' element in a 'gnloperation' and add the 'gnloperation' to the
>>>>> 'gnlcompostion'. The addition of the gnloperation doesn't seem to do
>>>>> anything. The resulting video is the same regardless of whether I add
>>>>> the gnloperation or not. The result is always that the second video
>>>>> takes over during the period of overlap. Here is code I have (in
>>>>> python):
>>>>>
>>>>> comp = gst.element_factory_make("gnlcomposition")
>>>>> src1 = gst.element_factory_make("gnlfilesource")
>>>>> src2 = gst.element_factory_make("gnlfilesource")
>>>>>
>>>>> comp.add(src1)
>>>>> src1.set_property("location", "/test1.mp4")
>>>>> src1.set_property("start", 0 * gst.SECOND)
>>>>> src1.set_property("duration", 5 * gst.SECOND)
>>>>> src1.set_property("media-start", 0 * gst.SECOND)
>>>>> src1.set_property("media-duration", 5 * gst.SECOND)
>>>>>
>>>>> comp.add(src2)
>>>>> src2.set_property("location", "/test2.mp4")
>>>>> src2.set_property("start", 2 * gst.SECOND)
>>>>> src2.set_property("duration", 5 * gst.SECOND)
>>>>> src2.set_property("media-start", 0 * gst.SECOND)
>>>>> src2.set_property("media-duration", 5 * gst.SECOND)
>>>>>
>>>>> op = gst.element_factory_make("gnloperation")
>>>>> tran = gst.element_factory_make("smpte")
>>>>> tran.set_property("type", 234)
>>>>> tran.set_property("duration", 3 * gst.SECOND)
>>>>> op.add(tran)
>>>>>
>>>>
>>>> Set the [media-]{start|duration} propertie son op also
>>>>
>>>
>>> I had already tried this as well.
>>>
>>> op.set_property("start", 2 * gst.SECOND)
>>> op.set_property("duration", 3 * gst.SECOND)
>>> op.set_property("media-start", 0 * gst.SECOND)
>>> op.set_property("media-duration", 3 * gst.SECOND)
>>>
>>> I am not sure what I should put the media-start at, but I have tried
>>> both 0 and 2 and neither works. Any other ideas?
>>>
>>>
>>>
>>>> comp.add(op)
>>>>>
>>>>> Anyone know if using an smpte transition is possible, and if so, what I
>>>>> am doing wrong?
>>>>>
>>>>> Thanks,
>>>>> Lane
>>>>>
>>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20110104/89538ef9/attachment.htm>
More information about the gstreamer-devel
mailing list