как сделать паузу на экране записи в python - PullRequest
2 голосов
/ 15 апреля 2020

Я создаю программное обеспечение для записи экрана в python.

И в этом его функция screen_capturing () почти завершает захват снимка экрана и сохраняет его в массиве, а затем opencv преобразует эти изображения в видео. файл.

Итак, у меня есть функция запуска и остановки, но теперь я хочу приостановить их во время работы и затем возобновить их снова.

Как мне добиться этой паузы / возобновления части

import tkinter as tk
from tkinter import *
from PIL import Image, ImageTk, ImageGrab
import cv2
import numpy as np
import threading

p = ImageGrab.grab()
a, b = p.size
filename=(f'C://Users/{os.getlogin()}/desktop/temp_vid.mp4')
fourcc = cv2.VideoWriter_fourcc(*'X264')
frame_rate = 10
out = cv2.VideoWriter() 

def screen_capturing():

    global capturing
    capturing = True

    while capturing:

        img = ImageGrab.grab()
        frame = np.array(img)
        frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
        out.write(frame)

def start_screen_capturing():

    if not out.isOpened():

        out.open(filename,fourcc, frame_rate,(a,b))
    print(' rec started')
    t1=threading.Thread(target=screen_capturing, daemon=True)
    t1.start()

def stop_screen_capturing():
    global capturing
    capturing = False
    out.release()
    print('complete')

start_cap = Button(root, text='Start Recording', width=30, command=start_screen_capturing)
start_cap.grid(row=0, column=0)
stop_cap = Button(root, text='Stop Recording', width=30, command=stop_screen_capturing)
stop_cap.grid(row=0, column=1)

root.mainloop()

1 Ответ

0 голосов
/ 15 апреля 2020

Используйте эти функции для паузы и возобновления с помощью кнопок.

def pause_screen_capturing():
    global capturing
    capturing = False
    print("Paused")

def resume_screen_capturing():
    global capturing
    capturing = True
    if not out.isOpened():
        out.open(filename,fourcc, frame_rate,(a,b))
    t1=threading.Thread(target=screen_capturing, daemon=True)
    t1.start()
    print("Resumed")
...