[gst-devel] Video transitions using gnloperation
Lane Brooks
lane at brooks.nu
Tue Jan 4 18:56:55 CET 2011
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
More information about the gstreamer-devel
mailing list