Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Creating movies in codea

in Questions Posts: 29

Aside from the startRecording()/stopRecording() (which leaves an ugly big watermark on the video) is there any other wya I can create a video? I’d like to build out a simple animation tool that could then be used to record simple videos. The solutions I’ve thought about are inserting a 5 second timer before the animations run so I can do a screen record, and ..er.. that’s it.

I’m assuming the watermark is an apple restriction, but is there a way to either remove the watermark or send the screen output to a movie file that can then be recorded?

-PJ

Comments

  • dave1707dave1707 Mod
    edited March 28 Posts: 7,923

    @pjholden Try setting displayMode(FULLSCREEN_NO_BUTTONS) . You'll have to use the touched function to startRecording and stopRecording. Or just startRecording as soon as the program starts and I guess it will stop recording if you stop the program.

  • Posts: 29

    Hi, I’ve done that - when you start recording programmatically you get a “RECORDING” message on screen (along with a timer letting you know how long the recording is) I’m assuming this was to comply with apple’s requirement that users know when you’re recording the screen.

  • dave1707dave1707 Mod
    Posts: 7,923

    @pjholden I don't get that on my iPad. When I look at the video, all I see is the screen. There isn't any RECORDING message or timer.

  • Posts: 29

    The numbers are things I’ve drawn on screen, the Red recording and camera icon are codea’s Own...

  • dave1707dave1707 Mod
    edited March 28 Posts: 7,923

    Here's the program I'm using. Tap the screen to start recording. Tap the screen to stop recording. When you stop recording, I call exit() which doesn't exist so the program cancels back to the editor. You'll be given the option to save the video.

    displayMode(FULLSCREEN_NO_BUTTONS)
    
    function setup()
        z=1
        v=0
        xx=0
        stopRecording() 
        fill(255)  
    end
    
    function draw()
        background(40, 40, 50)
        text(z,WIDTH/2,HEIGHT-100)
        if xx==0 then
            text("tap screen to start recording",WIDTH/2,HEIGHT-50)
        end
        if xx==2 then
            text("tap screen to stop recording",WIDTH/2,HEIGHT-50)
        end
        if xx==1 then
            startRecording()
            xx=2
        end
        if xx==3 then
            stopRecording()
            exit()
        end
        z=z+v
        ellipse(WIDTH/2,HEIGHT/2,z)
    end
    
    function touched(t)
        if t.state==BEGAN then
            xx=xx+1
            v=.5
        end
    end
    
  • Posts: 29

    Hmmm I think I was doing FULLSCREEN, though I did edit it to fullscreen no buttons and got the same message but coming out and in and it’s made it go away! Ta!

  • Posts: 29

    For what it’s worth...

    I wrote a recordScreen wrapper to add a countdown and a timer. When it’s begun it’s given a callback function which is the animation proper (which right now are just a couple of simple tweens on some sprites)
    (I’ve lots of tidying up to do, it was more proof of concept at this stage)



    recordScreen = class() function recordScreen:init(t) -- you can accept and set parameters here self.countDown = {} self.countDown.timer = 4 self.countDown.time = self.countDown.timer - 1 self.t = t or 10 -- default to 10 seconds... self.recorder = {} self.recorder.time = self.t + self.countDown.timer -- add the timer to the total record time... self.recorder.tminus = self.recorder.time self.recorder.recording = false self.inCountdown = false self.timeStart = os.time() self.debug = true end function recordScreen:begin( callback ) -- begin the countdown ... self.inCountdown = true self.timeStart = os.time() -- first tween is for the on screen count down 4/3/2/1 startRecording() tween(self.countDown.timer, self.countDown, {time = 0},nil, function (param) self.inCountdown = false if callback then return callback() end end ) -- this second tween is for the overall record... simple cancel record when we're done! tween(self.recorder.time, self.recorder, {tminus=0}, nil, function(params) self:endrecord() end ) end function recordScreen:endrecord() self.timeFinish = os.difftime(self.timeStart, os.time()) -- turn off screen recording... stopRecording() end function recordScreen:runningTime() return os.difftime( os.time(), self.timeStart) end function recordScreen:draw() -- Codea does not automatically call this method pushStyle() if self.inCountdown then pushMatrix() fontSize(100) text(math.ceil(self.countDown.time), WIDTH/2, HEIGHT/2) popMatrix() end if self.debug then fontSize(12) text(self.recorder.tminus, WIDTH-300, HEIGHT-200) end popStyle() end function recordScreen:touched(touch) -- Codea does not automatically call this method end
Sign In or Register to comment.