

最近有小伙伴反馈,影刀的录屏功能限制有点多,当前影刀支持的录屏场景只有“每次运行”和“运行失败”这两种录屏场景。

当前的这两种场景的局限性还是比较多的,比如很多个性化的录屏需求就无法实现。
① “应用开发状态下的调试运行“没办法录屏
② 个性化录屏不支持,比如try……catch组合中,只录屏catch里面的指令操作
③ 只录取某个子流程的录屏操作、或者只要第8行到100行之间指令的操作录屏
……
针对小伙伴们个性化的录屏场景需求,可以通过ffmpeg-python这个库来实现自定义录屏的功能。
跟AI讨教了方法,测试几遍,调整了会出错的代码后,就可以使用下面的代码来封装自定义指令拉。




用于封装自定义指令的代码如下:
import ffmpeg
import os
import signal
import subprocess
import threading
# 全局变量用于存储录屏进程的pid
recording_pid = None
def start_recording(output_path="output.mp4"):
"""
开始录屏,默认保存为mp4格式。
Args:
output_path (str, optional): 视频保存路径. Defaults to "output.mp4".
"""
global recording_pid
if recording_pid is not None:
print("已经在录屏了!")
return
command = [
'ffmpeg',
'-f', 'gdigrab',
'-framerate', '30',
'-i', 'desktop',
'-vcodec', 'libx264',
'-preset', 'veryfast',
'-crf', '25',
output_path
]
process = subprocess.Popen(command, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
recording_pid = process.pid
print("开始录屏...")
print(f"recording_pid: {recording_pid}")
def stop_recording():
"""
结束录屏。
"""
global recording_pid
if recording_pid is not None:
os.kill(recording_pid, signal.CTRL_BREAK_EVENT)
recording_pid = None
print("录屏已结束")
else:
print("没有正在录制的视频")
通过“开始录屏”和“结束录屏”两条指令,就可以灵活录屏各种自定义场景拉!

备注:自定义录屏指令不建议和影刀的默认录屏功能同时开启哈,不然会导致资源过度占用,影响自动化流程哦。