Maybe bandicam or Obs makes your fps cry ? 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 )
-
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 streamable.com (and right-click re-download the upload) so it’s like “processed” to fit online standards or whatever what
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