| ★ wanayoo — archive 1999 https://www.thepythoncode.com/article/make-screen-recorder-python | Nouvelle recherche | Portail wanayoo |
Screen recording enables you to create demonstration videos, record gaming achievements and create videos that can be shared online on social media, many industrial softwares exists out there that can help you do that very easily though. In this tutorial, you will learn how to make your own simple screen recorder in Python that you can extend on your own needs.
Let's get started, first, install the required dependencies for this tutorial:
pip3 install numpy opencv-python pyautogui
The process is as follows:
Importing necessary modules:
import cv2
import numpy as np
from time import perf_counter
import pyautogui
Let's initialize the format we gonna use to write our video file ( named "output.avi" ):
# display screen resolution, get it from your OS settings
SCREEN_SIZE = (1920, 1080)
# define the codec
fourcc = cv2.VideoWriter_fourcc(*"XVID")
# create the video write object
out = cv2.VideoWriter("output.avi", fourcc, 20.0, (SCREEN_SIZE))
Note: You need to get the correct SCREEN_SIZE from your operating system, that is the screen resolution, otherwise writing to the file won't work.
The 20.0 float value passed as third parameter to cv2.VideoWriter corresponds to the FPS ( Frame Per Second ).
Now we need to keep capturing screenshots and writing to the file in a loop until the user clicks the "q" button, here is the main loop for that:
while True:
# make a screenshot
img = pyautogui.screenshot()
# convert these pixels to a proper numpy array to work with OpenCV
frame = np.array(img)
# convert colors from BGR to RGB
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# write the frame
out.write(frame)
# show the frame
cv2.imshow("screenshot", frame)
# if the user clicks q, it exits
if cv2.waitKey(1) == ord("q"):
break
# make sure everything is closed when exited
cv2.destroyAllWindows()
out.release()
After converting the screenshot to a numpy array, I need to mention that you need to convert that frame into RGB, that's because OpenCV uses BGR by default.
After you are done with recording, just click "q", it will destroy the window and finish writing to the file, try it out!
There are endless of ideas you can use to extend this small recipe, for example you can create keyboard shortcuts that starts, pauses and stops recording. This tutorial may help you: How to Control your Keyboard in Python.
Happy Coding ♥
View Full Code