Hi! I am a noob, but I think the problem: if you use "hdv_720_50p" profile in your main function and create a consumer with that profile, you won't have a big enough consumer. https://www.mltframework.org/docs/profiles/
Best regards, Hudi José María García Pérez <josemaria.alk...@gmail.com> ezt írta (időpont: 2022. jan. 5., Sze, 20:54): > Honestly I don't understand that comment. > > The documentation is clearly insufficient. The framework design just gives > you a glimpse of the ideas; it doesn't even mention the word profile > https://mltframework.org/docs/framework/. The demos are more oriented to > the usage of melt. melt.c is not the best learning source either. > > So honestly I am bit confused, and this is the reason why I am asking for > help. I am not asking for the code solution, but for some direction about > the approach to follow. > > > El mié, 5 ene 2022 a las 20:43, Dan Dennedy (<d...@dennedy.org>) escribió: > >> 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 >
_______________________________________________ Mlt-devel mailing list Mlt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mlt-devel