我正在使用此代碼捕獲顯示幕上的所有內容并將其保存到 mp4 檔案:
# screen recording config
sct = mss()
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(recording_file_name_location, fourcc, 20.0, (1920, 1080))
# while loop that captures the while screen image by image
while True:
sct_img = sct.grab(screen_resolution)
out.write(np.array(sct_img))
問題是我希望此代碼在我從 Windows 機器注銷后停止錄制,這確實發生了,并且視頻保存在我的桌面上,但它無法播放。
如果我通過 PyCharm 運行此代碼并通過 PyCharm 結束代碼(CTRL C 或我使用 PyCharm 停止按鈕),那么它確實保存了 mp4 檔案,我可以毫無問題地播放它。
此外,如果我從 CMD 啟動代碼,它作業正常,但如果我關閉右上角“X”上的 CMD 視窗,視頻將再次無法播放。
我猜這是由于在后臺殺死 Python 行程而發生的,因此腳本/代碼永遠不會正確保存檔案。
你們對這個問題有什么建議嗎?注銷或關閉 Windows 機器后如何保存 mp4 視頻?
先感謝您
uj5u.com熱心網友回復:
該行程被突然終止。
該視頻無法播放,因為out.release()無法呼叫。視頻作者沒有機會將索引結構寫入視頻檔案,這只能在檔案完成時完成。
簡單修復:制作.ts檔案而不是任何其他格式/擴展名。這些“傳輸流”格式永遠不需要最終確定。
也許您需要了解 Windows 在您注銷時如何結束行程。通常 Windows 會發送每個應用程式/視窗WM_QUERYENDSESSION和WM_ENDSESSION訊息,告訴它在強制結束之前自行結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/488150.html
上一篇:PythonCV2視頻在python行程被殺死后無法播放
下一篇:Flask-根據條件顯示影像
