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