Overlaying on video

Ben Rubinstein benr_mc at cogapp.com
Mon Mar 27 08:35:28 EDT 2017


Hi Rick

Thanks for your reply.

 > I think once a movie starts playing other LC messages don’t
 > have time to be sent. The video just takes over because
 > it’s showing each frame quickly so your eye tells you
 > it’s a movie.

I don't think that's it. I've had time codes displays running before, achieved 
in this way, so something that normally works, doesn't. I haven't worked out 
if this is an issue with 8.1.3 or another side effect of the particular movie. 
Or just that working late on a small screen, I made some other stupid mistake.

 > One solution I had to use in the past to make a decent
 > animation was to break the movie into each frame and
 > then put each frame onto each card.

I took a similar approach for now - rather than playing the movie and then 
catching the currenttime, I used my timer to keep setting the current time, 
moving it on a frame at a time (in fact for now I wanted to export a timelapse 
of the movie anyway, so was happy to jump it along half-a-second at a time). 
But in my ideal world I'd have this working interactively, including allowing 
the user to scrub the movie to a different time and have the data graphics 
update as they did.

 > I tried importing a Quicktime movie which had the .mov suffix into LC.
 > I put a graphic on top of the movie and when I went to play the movie
 > the movie put itself on top of the graphic.  So what to I need to do to
 > recreate your solution?

That's what I don't know yet! Obviously it's not enough that it's a .mov 
instead of a .mp4; when I exported it, the movie also changed codec, 
resolution, framerate... (partly because I was in a hurry so I decided to work 
with a smaller lighter version to make progress). I'll need to try some 
experiments with changing fewer attributes to find out which is the crucial one.

What are the characteristics of the movie you tried it with, that didn't work?

Ben


On 27/03/2017 01:30, Rick Harrison via use-livecode wrote:
>
> Hi Ben,
>
> To try to answer the second part of your question first.
> I think once a movie starts playing other LC messages don’t
> have time to be sent. The video just takes over because
> it’s showing each frame quickly so your eye tells you
> it’s a movie.
>
> One solution I had to use in the past to make a decent
> animation was to break the movie into each frame and
> then put each frame onto each card.  I had a short
> movie so it ended up being 254 cards.  It was for iOS
> so I needed to optimize for a cell phone processor.
> Then I was able to have a graphic which appeared
> on every card move on top of the changing cards.
> So my animated character was able to move around
> freely on top of a video background.  I was able to
> adjust the timing of the loops so it looked pretty good.
>
> Regarding the first part of your message:
> I’m trying to duplicate some of your experience here.
>
>> Eventually I discovered by accident that this only applies to some videos. For now, I got the job I needed to do done by rendering the original .mp4 into a .mov with QuicktimePlayer's default settings; I haven't had time to establish what the crucial factors are. Is this known/documented anywhere?
>
> I tried importing a Quicktime movie which had the .mov suffix into LC.
> I put a graphic on top of the movie and when I went to play the movie
> the movie put itself on top of the graphic.  So what to I need to do to
> recreate your solution?
>
> Thanks,
>
> Rick
>
>
>
>
>> On Mar 26, 2017, at 6:54 PM, Ben Rubinstein via use-livecode <use-livecode at lists.runrev.com> wrote:
>>
>> I'm trying to overlay some graphics on a video, and hit a couple of problems.
>>
>> The first, which drove me somewhat mad until I found an out, was that the video was always displayed on top of other LC elements - graphics, fields. This is using a player object; I found that the controller would be rendered correctly layered among other objects, and indeed would obey blending levels; and occasionally in tool mode the video frame would also; but once I switched back to browse mode and played the video, it invariably displayed on top of everything else, at 100% opacity. Toggling the "buffer" property did not appear to make a difference.
>>
>> Eventually I discovered by accident that this only applies to some videos. For now, I got the job I needed to do done by rendering the original .mp4 into a .mov with QuicktimePlayer's default settings; I haven't had time to establish what the crucial factors are. Is this known/documented anywhere?
>>
>> The second problem - which I also found frustrating because I'm sure I've done something similar before without this arising - was in triggering the updates to my overlay graphics. I thought that I could have a timer sending a regular message to my code which would check the time of the movie, and adjust graphics appropriately. The code worked but I only saw an update twice; when the movie started, and when it stopped. As far as I could tell this wasn't an issue about the screen not updating; but that the message genuinely wasn't sent while the movie was playing. Again, is this a known issue? Or do others think this should work, and I was just doing something wrong?
>>
>> TIA,
>>
>> Ben




More information about the use-livecode mailing list