Using the internal ffmpeg to screen capture

since BGE uses ffmpeg , i was wondering if its possible to render to a video the running game

https://docs.blender.org/api/2.79/bge.texture.html?highlight=bge%20texture#video-classes

how can i use that ? Can the ‘capture’ parameter be the standalone player’s window ? Please help

before i simply used the bge.render to take a screenshot at each frame but it was laggy
https://docs.blender.org/api/2.79/bge.render.html#bge.render.makeScreenshot

If I am not mistaken, the VideoFFmpeg class will decode a video stream, when you would be looking for an encoder. I don’t think the BGE exposes anything like this.

Although, making screenshots might be laggy because of the jpeg encoding + file system access. An alternate solution would be using ImageRender and stream the rendered buffer to a thread and do the encoding and disk access there. Or in a subprocess even, to benefit from true multi-processing power (and ultimately avoid making your game too laggy). You basically have to implement a lag free encoding and storing yourself, either in Python or somehow see how to support this in the engine.

On Windows 10, you can use built in video capture. Press Win + G, and it will pop up a dialog which lets you capture the screencontent.

unfortunately i don’t have time to work on something like that. For the moment, i will just keep using ffmpeg in a terminal for screen capturing. Wondering if a built-in BGE ffmpeg solution could be faster as the picture is already is already processed.

@AeroLynx , why im not surprised to learn that there’s a built-in video capture in SpyOS 10 ? :smiley:

You also have options to screencast on e.g. UBUNTU, that is nothing to do with SpyOS or not. I just found it very convenient for documentation at work, that it’s included.

If you need more options, please check my reply on stackexchange on the topic: