İnternette ilgili bilgileri araştırdığım fikirler ve PIL görüntü işleme kitaplığının ImageGrab modülü temel olarak video kaydetmek için kullanılıyor. Bu modül, mevcut ekranın veya panonun içeriğini PIL görüntü belleğine kopyalamak için kullanılabilir.
Bu modül içeriği mevcut ekranda alabildiği için kesintisiz alıyorum ve ardından alınan içeriği bir araya getiriyorum, video değil mi?

Kaydı gerçekleştirmenin
genel fikri , PIL modülündeki ImageGrab'ın mevcut ekranı almaya devam etmesi ve video akışını yazmak için opencv kullanmasıdır.

def video_record(sttime):
    global name
    # geçerli saat (dosya adı olarak)
    name = datetime.now().strftime('%Y-%m-%d %H-%M-%S')
# geçerli ekranı al
    screen = ImageGrab.grab()
# Mevcut ekranın boyutunu al
    width, high = screen.size
# MPEG-4 kodlama, dosya soneki .avi .asf .mov vb olabilir.
    fourcc = VideoWriter_fourcc('X', 'V', 'I', 'D')
# (dosya adı, kodlayıcı, kare hızı, video genişliği ve yüksekliği)
    video = VideoWriter('%s.avi' % name, fourcc, 15, (width, high))
    print(str(sttime) + 'Saniyeler içinde kaydetmeye başlayın----')
    time.sleep(int(sttime))
    print('kayda başla!')
    global start_time
    start_time = time.time()
    while True:
        if flag:
            print("Kayıt bitti!")
            global final_time
            final_time = time.time()
      # serbest bırakıldı
            video.release()
            break
# Resim RGB modunda
        im = ImageGrab.grab()
# opencv'nin BGR moduna dönüştürün
        imm = cvtColor(np.array(im), COLOR_RGB2BGR)
        #Kayıt
        video.write(imm)
Video kaydetmenin ana kodu sadece birkaç satırdır, ancak kaydı başlatma, kaydı bitirme vb. kayıt işlemlerini kontrol etmemiz gerekir. Ekran içeriği elde edildikten sonra içeriğin kod çevrimi yapılması ve ardından video akışına yazılması gerekir.
Klavye olaylarını tespit etme
Video kaydetmek için ekran bilgilerini almak için bir süre döngüsü kullanıyoruz ve başladıktan sonra devam edecek. Ancak bu döngüyü sonlandırmak ve böylece video kaydını durdurmak için klavye olaylarını dinlememiz gerekiyor. Bu izleme olayı çok önemlidir.Klavye ve fare olaylarını küresel olarak izleyebilen güçlü üç taraf kitaplık pynput burada kullanılır.
Ayarladığımız şey, kullanıcı klavyenin ESC tuşuna bastıktan sonra while döngüsü sonlandırılarak video kaydı sonlandırılıyor.

# Tuş vuruşlarını izleyin
def on_press(key):
    global flag
    if key == keyboard.Key.esc:
        flag = True
# Yanlış Döndür, klavye izleme bitti!
        return False
Ana gövde kontrolü
Ekran içeriğini sürekli olarak almamız gerektiğinden, bunu yapmak için bir konu başlatsak iyi olur.
th = threading.Thread(target=video_record, args=sstime)
    th.start()
    with keyboard.Listener(on_press=on_press) as listener:
        listener.join()
Video Bilgileri Videoyu
kaydettikten sonra, süre, kare hızı, çözünürlük vb. gibi videoyla ilgili bazı bilgileri de alabiliriz.
# video bilgisi
def video_info():
# Dosya adı ve formatının yanlış olmadığını unutmayın!
    video = VideoCapture('%s.avi' % name)
    fps = video.get(CAP_PROP_FPS)
    count = video.get(CAP_PROP_FRAME_COUNT)
    size = (int(video.get(CAP_PROP_FRAME_WIDTH)), int(video.get(CAP_PROP_FRAME_HEIGHT)))
    print('kare hızı=%.1f' % fps)
    print('çerçeve numarası=%.1f' % count)
    print('Çözünürlük', size)
    print('Video süresi = %.3f saniye' % (int(count) / fps))
    print('kayıt süresi = %.3f saniye' % (final_time - start_time))
    print('Önerilen kare hızı =%.2f' % (fps * ((int(count) / fps) / (final_time - start_time))))
Daha fazla python bilgisi öğrenmek istiyorsanız, lütfen beğenmeyi ve yorum atmayı unutmayınız.