Screen Rekorder - Proof of Concept

I see people have asked if it is possible to create a screen recorder using Kodular. The practical answer still is:

However, what if you wanted to achieve a real screen recorder using just the components available in Kodular 1.4B.1? Yours truly did just that. :wink:

Spoiler Alert: You’d get better FPS running Crysis on a Nokia 3310.


A locked FPS would be a bad idea for this project, so the recorder instead makes use of Variable Refresh Rate. Beware, your internal storage will get messy.

Screenshots


Demo:


Download Links:

AIA R1
APK R1
AIA R2
APK R2


This is not a template, just a demonstration. Functionality may change dramatically in any future release (if any; let me know if you guys enjoy this kind of project) and will almost certainly not be compatible with previous releases.

NOTE: Recordings are overwritten. Also, do yourself a favour and don’t playback the previous recording while you are recording the screen, since variables are reused.


BONUS:

This post triggered me to make this:

15 Likes

Great job. Can you post one of your recordings that you made and maybe tell how you did it?

2 Likes

@Peter the MPEG video won’t show up properly, could you help with that? :sweat_smile:

Edit: Putting the file outside the “details” tag worked. Yay to tinkering; thanks to Peter for offering to help.

You mean on the forum?

Yes. On the forum.

What if you put it on youtube? Then you can just post the link. Or you can pm me your mpeg.

1 Like

The way the app works:

Screenshots are taken as rapidly as possible, with a metadata storing the timestamp for the VRR to work. The playback utilizes the metadata to properly show the screenshots.

It makes use of the fact that even PowerPoint can be made to show videos if you were to show 24 slides every second (except that the average phone will manage a 4 FPS video using Screen Rekorder).

3 Likes

@Hadi_Editz Thanks for trying to contribute to the community, but you wrongly edited the title of my post. :slight_smile:

And now @Peter. Could you guys stop editing my post title? :sweat_smile:

I didn’t edit your title. I added the mp4. Can you see it?

Strange… It showed that you edited the title. Anyway, moving the Demo video outside the details tag made it visible anyway. Still, thanks!

2 Likes

:flushed: :rofl:

2 Likes

Good idea!
I was thinking, if you save only a canvas image, then someone makes an extension that can take a list of image files and turn it into a gif, you could make a cool animator!

3 Likes

See Juan Antonio’s gif extension (which can make a gif from images)

Sorry on further reading, this extension decompiles a gif to individual frames, not the other way :slight_smile:

3 Likes

You’re absolutely correct. However I merely chose a Canvas to show that changes are indeed recorded by Rekorder. It will work with whatever is on the screen (barring some components like Circular Progress Bar, which vanish magically).

2 Likes

Something to note: Rekorder doesn’t need the Canvas; it’s just a way to create large noticeable changes between subsequent frames. The actual Recording would happen irrespective of what components are being shown. :slight_smile:

5 Likes

@Kanishka_Developer

Thought I would have a play with this and built this up over on AppInventor, using @Taifun 's Screenshot extension. Took a different approach and used a clock to fire the screenshots (the main reason being when I ran your blocks in my genymotion emulator I was getting 60 fps!), added a timer selector, and some stats after stopping. I also added a delete images, to help clean up the sdcard :wink: Uploaded to Kodular and it works just as well. I am finding on devices I am getting between 4.5 and 7 fps, would like to see it up nearer 10 but the shotter just can’t go any quicker! :slight_smile:

ScreenGifferNew.aia (15.0 KB)

Screenshot

Blocks

6 Likes

Screen Rekorder’s first prototype actually used a Timer to lock FPS at 25. I had to implement VRR to improve the stability.

I’m intrigued by your test results to say the least (it’s GREAT to see others join my outlandish projects! :smiley:) and will see what framerates I get on Android Studio. Btw Screen Rekorder R2 has an Average FPS meter. :wink:

3 Likes

Screen Rekorder R2 Changelog:

  • Added Average FPS meter for benchmarking your device.
  • Added a “Clean Up” menu item to remove the Rekorder files in one click.

Download Links:
AIA
APK

4 Likes

Further developments…

Juan Antonio has kindly made an extension to “make a gif” (Many thanks Juan!)
http://kio4.com/appinventor/293C_extension_crear_gif_animado.htm
I incorporated it into my first effort, and display the resultant gif in a webviewer
(the aia and blocks are done in AI2)
ScreenGifferNewAI2.aia (65.8 KB)

Screen Giffer Blocks

Also (@Italo) I revised things to use Jerin Jacob’s Component 2 Image extension, to capture just the canvas component (inside a vertical arrangement)
(again in AI2)
CanvasGiffer.aia (42.6 KB)

Canvas Giffer Blocks

3 Likes

A Canvas Recorder is infinitely more simple (and efficient) than a Screen Recorder. :sweat_smile: You can have basically 100% efficiency on a Canvas Recorder, due to the different implementation. A Screen Recorder though… Oof.

Btw, A Pixel 3 VM (API 29) on the Android Studio Emulator bags me a whopping 5 FPS (on a decent laptop mind you), so I’m guessing GenyMotion has some serious optimization. Too bad it has no free version.

1 Like