我如何在python中暂停录制屏幕

Posted

技术标签:

【中文标题】我如何在python中暂停录制屏幕【英文标题】:how do i pause the recording screen in python 【发布时间】:2020-07-28 07:31:26 【问题描述】:

我正在用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()

【问题讨论】:

您可以暂时停止截屏,然后再继续截屏。只需要将以前的记录与新记录连接起来,您也可以使用全局变量。 @AmitRautray 你能告诉我如何使用答案部分中的代码来做到这一点。将不胜感激。 是的。 @jadu 【参考方案1】:

使用这些功能通过按钮暂停和恢复。

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")

【讨论】:

以上是关于我如何在python中暂停录制屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中合并音频和视频

iOS 11 屏幕录制禁用视频录制

如何在android中记录暂停

mediarecorder 如何暂停和恢复录制视频

如何把歌曲保存到录音里?

如何在 UWP 中录制桌面屏幕