Screen capture without sound - light method

Maybe bandicam or Obs makes your fps cry ? :sob: I 'll explain how to record game with screen shots and how you can produce a video with them.

  • create a folder named ‘screenshots’ in the same directory that your .blend

  • install ffmpeg (do it once of course :grimacing: )

  • you can use a python script to capture each N frame. Here below, i start capture screen each 2 frame once i press “9” . Why 1000 ? Because i will name my screen capture records : 1000 , 1001, 1002, …

  • the resolution of your pictures is defined in you render tab - properties panel

  • your object running the script has an Integer property ‘img’ set with a value lower than 999

the “screenshots” script

import bge 

cont = bge.logic.getCurrentController() 
own = cont.owner 

bge.render.makeScreenshot("//screenshots/pic1" + str(own["img"]) + ".png")
own["img"] += 1
  • check (number of elements in folder = 1923 ? your last picture should be named pic1922.png)
  • with a terminal, go in the ‘screenshots’ folder you created
  • with ffmpeg , here is the command to create a video
ffmpeg -i pic1%03d.png -vf fps=30 -crf 15 myvideo.mp4
  • a mp4 will be created in the same folder with a quality of 15 (lower = best). I set the fps on 30 as i recorded each 2 frame a game running at 60.
  • the video will be created with all the pics named on a range [pic1000.png , pic1999.png] . So the video will goes up to 33 secs.
  • If you want longer screen recording, change 1000 to 10000 in the script and pic1%03d.png to pic1%04d.png. Or you can take a screen shot each 3,4 or 6 whatever frame u want.
  • If your output video cannot be readable on this forum, you can upload it on (and right-click re-download the upload) so it’s like “processed” to fit online standards or whatever what :thinking:

More easy, but less powerful

It’s possible to screen capture directly with ffmpeg (so dont need to screen shot in game).
Here for Linux. It will record a 960x540 space starting from top-left of your screen. Google, for more details and/or for Windows corresponding command

ffmpeg -video_size 960x540 -framerate 30 -f x11grab -i :0.0+0,0 myvideo.mp4

recommandations :

  • 800x600 , screen shot each 2 frame (=30fps)
  • don’t have your “screenshots” folder open while recording, displaying and thumbnailing process will noob your record. Don’t be noob.
  • close all ur activities: Internet, Games
  • desinstall Chrome and other spywares
  • delete all ur pics once u made ur video

thats gonna be really sloooooowwww

1 Like

i actually tried running screenshot per frame, and i got less than 1 fps

1 Like

this method is the fastest for me (no gpu). Just capture each 2 frame and it’s perfect. Of course, 1920x1080 will lag.

I’ve course you have a GPU. Every computer has one :wink: even tho they may be sad to use.

Is this correct in your understanding?

why ask ? it doesn’t work ?

Yes it works, I was wondering if it’s right

What exactly are you trying to achieve here :thinking: ?