Python İle Ekran Kaydedici Yapmak
15 Haziran 2021
Bu yazım içerisinde python ile ekran kaydetme uygulaması, python screen recorder
gibi aramalarınıza yanıt bulabilecekseniz.
Eğer python ile ekran kaydetme uygulaması yapmaya karar verdiyseniz
bilgisayarınız üzerinde zaten python indirilmiş ve kurulmuştur diye
düşünüyorum. Dolayısı ile python kodlayabilmek için bilgisayarınızda gerekli
ortamın hazırlanması ile ilgili açıklamalarda bulunmadan direkt kod yazma
aşamasına geçeceğim. Eğer python için gerekli bir ortam hazırlamadıysanız
internet üzerinde birçok kaynak mevcut. Kısa bir araştırmanın ardından kolayca
gerekli ortamı hazırlayabilirsiniz.
Konuya girmeden önce videonun ne olduğunu anlamak gerekir. Temel olarak
bir video, belirli bir frekansta görüntülenen bir dizi görüntüden ibarettir.
Python ekran kaydetme
İlk olarak uygulamayı gerçekleyebilmemiz için gerekli olan
kütüphanelerin kurulumunu gerçekleştirmemiz gerekiyor. Aşağıda
verdiğim kodları sırasıyla terminale yazarak kütüphaneleri indirin. Başarı
ile kütüphanelerin indiğinden ve kurulduğundan emin olun.
pip install PyAutoGUI
pip install opencv-python
pip install numpy
Kütüphanelerin kurulumunu gerçekleştirdik ve projemize dahil ettik. Kodların
en son bütün halini yazının en aşağısında paylaşıyor olacağım.
Python screen recorder
Burada bazı ayarlamalar yapmamız gerekiyor.
res = pyautogui.size() codec = cv2.VideoWriter_fourcc(*'MP4V') filename = "video.mp4" fps = 10.0 result = cv2.VideoWriter(filename, codec, fps, res)
Bu kodlarda yer alan değerleri tanımlamak gerekirse:
- res: Çözünürlük. Burada elinizle (1920, 1080) tarzında değerler girebileceğiniz gibi benim yaptığım tarzda otomatik olarak ekran çözünürlük değerimizi almasını da sağlayabilirsiniz.
- codec: Videomuzun hangi formatta çıktılanacağını burada belirliyoruz. Ben burada mp4 seçtim. Bu seçimi isteğinize ve ihtiyacınıza göre değiştirebilirsiniz.
- filename: Çıktı aldığımız videonun adı.
- fps: Burada 10 olarak tercih ettim. İsteğinize göre arttırabilir ya da azaltabilirsiniz.
- result: Her bir kareyi alırken kaydedeceğimiz sonuç değişkenimiz.
Sıra kodumuzun sürekli olarak çalışmasını sağlamak için
döngü oluşturmaya geldi. Ancak bunu yapmadan önce kaydımızın
başladığını ve nelerin olup bittiğini görebilmek adına bir önizleme
penceresi oluşturalım.
cv2.namedWindow("Recording", cv2.WINDOW_NORMAL) cv2.resizeWindow("Recording", 350, 200)
Yukarıdaki kodlar yardımı ile önizleme penceresinin gerçekledik. Tüm ekranı
kaplamaması için istediğimiz boyutta küçülttük. Şimdi döngümüzü
oluşturalım.
while True: img = pyautogui.screenshot() frame = np.array(img) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
Döngümüz içerisinde ilk olarak ekran görüntüsü alıyoruz ve bunu img
değişkeni içerisine atıyoruz. Sonrasında aldığımız bu ekran görüntüsünü nump
arrayına dönüştürüyoruz. Son olarak aldığımız ekran görüntüsünün renklerinin
ters görünmemesi için yakaladığımız görüntüyü rgb'ye dönüştürüyoruz. Döngümüz
tamam. Şimdi bu görüntüleri videomuza kaydedeceğiz.
result.write(frame) cv2.imshow('Recording', frame) if cv2.waitKey(1) == ord('q'): break
Bu kodları da yazarak yakaladığımız ekran görüntülerini videomuza
kaydetmiş olduk. Kullanıcı istediği zaman 'q' tuşuna basarak
uygulamadan çıkabilir. Kullanıcı çıkmak için tuşa bastığında döngüden
çıkıyoruz ve aşağıdaki kodlar yardımıyla videomuzu release yapıp
kaydediyoruz, tüm pencereleri kapatıyoruz.
result.release() cv2.destroyAllWindows()
Python ile ekran kaydedici,
python ile ekran kaydetme uygulaması yapmak işte bu kadar basit. Kodun
bütün halini aşağıda bulabilirsiniz. Elimden geldiğince anlatmaya çalıştım.
Takıldığınız yerler veya sormak istediğiniz sorular için yorumlar kısmını
kullanabilirsiniz.
import pyautogui import cv2 import numpy as np res = pyautogui.size() codec = cv2.VideoWriter_fourcc(*'MP4V') filename = "video.mp4" fps = 10.0 result = cv2.VideoWriter(filename, codec, fps, res) cv2.namedWindow("Recording", cv2.WINDOW_NORMAL) cv2.resizeWindow("Recording", 350, 200) while True: img = pyautogui.screenshot() frame = np.array(img) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) result.write(frame) cv2.imshow('Recording', frame) if cv2.waitKey(1) == ord('q'): break result.release() cv2.destroyAllWindows()
Umarım işinize yaramıştır. Başka bir yazıda görüşebilmek üzere.
2 yorum:
Merhaba sizin paylaşmış olduğunuz ekran kaydedici kodlarını kullandım fakat sonuna geldiğimde no module named hatası alıyorum sizinde dediğiniz gibi hem cmd'den hem terminalden gerekli kodları tekrar yazıp yükledim fakat yine no module named hatası aldım bunu nasıl bir çözüme ulaştırabiliriz.
Merhaba Serhat, öncelikle değerli yorumun için teşekkür ederim. "No Module Named" hatası, projende kullandığın paketler yüklü olmadığında oluşan bir hatadır. Aslında bu yazı içerisinde paketlerin yüklenmesini anlatan bir bölüm var ama sanırım gözünden kaçırmışsın.
pip install PyAutoGUI
pip install opencv-python
pip install numpy
Bu kodları sırası ile terminalde çalıştırarak bu proje için bu sorunu giderebilirsin. Daha önce bu konu ile alakalı bir konu da paylaşmıştım aşağıya bıraktığım bağlantıya giderek ilgili konuya da ulaşabilirsin.
https://bagibublog.blogspot.com/2021/06/python-no-module-named-hatas.html
İyi çalışmalar.
Yorum Gönder