[英]Very low fps and frame drop in screen recording?
嗨,伙計們,我正在構建一個屏幕錄像機,它可以工作並創建屏幕錄像的“輸出”視頻,但是有一個問題,當我運行程序時,當我拖動並移動一個窗口時,我注意到很多幀丟失例如,在最終文件中,視頻輸出,FPS 不正確我的意思是每次我在觀看最終視頻時移動窗口時都會出現延遲,我試圖更改程序的“fps”值,但幀水滴仍然存在,我有一台 1920x1080 分辨率和 120 fps 的顯示器,所以它非常流暢,如何解決這個問題才能獲得流暢的輸出視頻? 非常感謝
import cv2
import numpy as np
from PIL import ImageGrab
def screenRec():
fourcc = cv2.VideoWriter_fourcc(*"XVID")
fps = 8.0
out = cv2.VideoWriter("output.mp4",fourcc,fps,(1920,1080))
while (True):
img = ImageGrab.grab()
img_np = np.array(img)
frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
out.write(frame)
screenRec()
嘗試 DivX MPEG-4 編碼怎么樣?
替換此行
fourcc = cv2.VideoWriter_fourcc(*"XVID")
和
fourcc = cv2.VideoWriter_fourcc(*"DIVX")
您可以嘗試的另一個編解碼器是 MP4v(H264 前身)和 H264/H265 編碼(對於這個芽,您必須手動構建 OpenCV 庫,步驟在此處描述
部分信息摘自這篇文章Save video in opencv with H264 codec
這個新的為您提供更多的 fps 並在打印幀之前與 waitKey 的 0.05 同步。
import cv2
import numpy as np
from PIL import ImageGrab
def screenRec():
fourcc = cv2.VideoWriter_fourcc(*"XVID")
fps = 20
out = cv2.VideoWriter("output.mp4",fourcc,fps,(1920,1080))
while (True):
img = ImageGrab.grab()
img_np = np.array(img)
frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
out.write(frame)
cv2.waitKey(50)
screenRec()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.