I am not going to help further. You need to learn more outside of the code.

On Wed, Jan 5, 2022 at 11:06 AM José María García Pérez <
josemaria.alk...@gmail.com> wrote:

> Could you explain a bit further?
>
> I mean:
> 1. Create profile: p
> 2. Create producer: video1 (with profile p)
> 3. Create producer: video2 (with profile p)
> 4. Read the frame sizes
> 5. Create a new profile with the size of both videos stacked vertically
> 6. Create the consumer with that new profile
>
> So far I am getting funny sizes.
>
> I declared the following function:
> 1. Creates a new profile
> 2. Resize the profile with the size of both videos
> 3. Creates a new tractor and adds the videos as two separated tracks.
> 4. I use an affine filter and applies "oy=height1" to the second track.
> 5. I apply the transition "addition" in order to make both videos visible.
> proc stackVertically( v1,v2:Producer ):tuple[tr:Tractor; p:Profile] =
> # Get an appropriate profile
> var profile = newProfile()
>
> var frame1 = v1.getFrame(0)
> var (width1,height1) = frame1.getImage()
> var frame2 = v2.getFrame(0)
> var (width2,height2) = frame2.getImage()
> profile.setWidth(width1 + width2)
> profile.setHeight(height1 + height2)
>
> # Create the tractor
> var tr = newTractor()
>
> tr.connect( v1, 0 ) # We use the playlist as track0
> tr.connect( v2, 1 )
> var aff = newFactoryFilter(profile, "affine")
> aff["transition.oy"] = height1
> tr.plant(aff, 1)
>
> var compose = profile.newFactoryTransition("frei0r.addition")
> tr.plant(compose, 0, 1)
> return (tr, profile)
>
>
> In order to use this function I do the following:
> 1. Read two videos (in this case I use the same video)
> 2. stack them vertically: the result is the tractor as a producer and the
> new profile
> 3. I create an SDL2 base on the new profile
> 4. Connect the tractor to SDL
> proc main =
> var f = initFactory()
> var p = newProfile("hdv_720_50p")
> var v1 = p.newMedia("./resources/big_buck_bunny_720p_2mb.mp4")
> var v2 = p.newMedia("./resources/big_buck_bunny_720p_2mb.mp4")
>
> var (newProducer, profile) = stackVertically( v1,v2 )
>
> # Consumer
> var sdl = profile.newFactoryConsumer( "sdl2" )
> sdl["terminate_on_pause"] = 1
>
> # From tractor to SDL2
> #v1.attach(aff1)
> newProducer > sdl
>
> # Start the consumer
> sdl.run
>
>
> The result is: https://i.imgur.com/eESDdJg.jpg
>
>
> El mié, 5 ene 2022 a las 18:28, Dan Dennedy (<d...@dennedy.org>) escribió:
>
>>
>> On Wed, Jan 5, 2022 at 9:22 AM José María García Pérez <
>> josemaria.alk...@gmail.com> wrote:
>>
>>> What is the proper way of stacking videos vertically?
>>>
>>> For example:
>>>    video1
>>>    ---------
>>>    video2
>>>
>>> so that I can later scale it and move it around in the profile.
>>>
>>> Right now I am using affine (scaling down and then positioning it
>>> vertically). But the result is something like:
>>>    video1 | black
>>>    ------------------
>>>    video2 | black
>>>
>>> Basically I am looking how to get a new video which is: (width) x
>>> (2*height)
>>>
>>> You need to make a custom profile.
>>
>
_______________________________________________
Mlt-devel mailing list
Mlt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlt-devel

Reply via email to