会社で画面キャプチャを録画したかったのですが、勝手にツール等をインストールできない環境でなんとかできないかなと考えた結果、Pythonで画面キャプチャをする方法を選択して作ってみたので今回はその方法をシェアします。
ちなみに、自由にインストールできるよって方は、以下で紹介されていました。
ゲームバーというアプリをインストールすればよいようです。
Windowsの標準アプリ?のようで、ショートカットキーで起動できるようです。

Windows 10 の標準機能で画面録画の動画とキャプチャを撮る方法「スクリーンショット」
Windows10/11の標準機能のスクリーンショットが強化され、簡単にパソコンの画面を動画で録画するこができま...
使用ライブラリ
まずは、今回使用したライブラリです。
- opencv
- numpy
- Pillow
それぞれの説明とインストールは方法は、以下の通りです。
opencvのインストール
画像処理をするための有名なライブラリで、Pythonで使用できるようになっています。
インストールは以下のコマンドです。
pip install opencv-python
numpyのインストール
numpyについては以前に記事にしていますので、以下を参照ください。
Pillowのインストール
こちらも画像処理のためのライブラリです。
pip install Pillow
今回使用するライブラリでインストールが必要なものは以上です。
サンプルコード
ではプログラム全体です。
import cv2
import threading
import numpy
import time
import sys
from logging import NullHandler
from PIL import ImageGrab
# 幅
W = 1920
# 高さ
H = 1080
# FPS(Frame Per Second:1秒間に表示するFrame数)
CLIP_FPS = 1.0
stop_flg=False
video = NullHandler
def main( directory ):
global stop_flg
global video
record_thread = threading.Thread( target = record )
codec = cv2.VideoWriter_fourcc(*'mp4v')
print("save to " + directory + "/capture.mp4")
video = cv2.VideoWriter(directory + "/capture.mp4", codec, CLIP_FPS, (W, H))
record_thread.start()
while True:
try:
time.sleep(1)
except KeyboardInterrupt:
stop_flg = True
print("rec Stop")
break
video.release()
record_thread.join()
def record():
global stop_flg
global video
print("rec Start")
while stop_flg == False:
image = ImageGrab.grab()
image = numpy.array(image)
# Convert RGB to BGR
image = image[:, :, ::-1].copy()
cv2.imshow('image',image)
cv2.waitKey(int(1000/CLIP_FPS))
video.write(image)
del image
cv2.destroyAllWindows()
if __name__ == '__main__':
args = sys.argv
if len(args) != 1:
main( args[1] )
プログラム実行
プログラムの実行は以下の通り実行します。
capture.pyは今回のプログラムのファイル名で、「DirectoryPath」は録画データを保存するディレクトリです。
python capture.py 「DirectoryPath」
これで実行すると、「DirectoryPath」で指定したディレクトリに”capture.mp4”という名前のファイルが生成されます。
コメント