137 lines
4.8 KiB
Python
137 lines
4.8 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
屏幕录制性能测试脚本
|
||
用于测试屏幕录制的CPU优化功能
|
||
"""
|
||
|
||
import time
|
||
import logging
|
||
import threading
|
||
from devices.screen_recorder import RecordingManager
|
||
|
||
# 配置日志
|
||
logging.basicConfig(
|
||
level=logging.INFO,
|
||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||
)
|
||
|
||
def test_screen_recording_performance():
|
||
"""
|
||
测试屏幕录制性能优化功能
|
||
"""
|
||
print("开始屏幕录制性能测试...")
|
||
|
||
# 创建录制管理器
|
||
recording_manager = RecordingManager()
|
||
|
||
# 配置性能参数(更严格的阈值用于测试)
|
||
recording_manager.configure_performance_settings(
|
||
cpu_threshold=70.0, # 降低CPU阈值以便测试
|
||
memory_threshold=80.0,
|
||
adaptive_fps=True,
|
||
min_fps=10,
|
||
max_fps=30
|
||
)
|
||
|
||
try:
|
||
# 启动屏幕录制
|
||
print("启动屏幕录制...")
|
||
result = recording_manager.start_recording(
|
||
session_id="test_session_001",
|
||
patient_id="test_patient",
|
||
screen_location=[0, 0, 1920, 1080], # 全屏录制
|
||
camera_location=[0, 0, 640, 480], # 默认相机区域
|
||
femtobolt_location=[0, 0, 640, 480], # 默认FemtoBolt区域
|
||
recording_types=["screen"] # 只录制屏幕
|
||
)
|
||
|
||
if not result['success']:
|
||
print(f"录制启动失败: {result['message']}")
|
||
return
|
||
|
||
print("录制已启动,开始性能监控...")
|
||
|
||
# 监控性能状态
|
||
def monitor_performance():
|
||
for i in range(30): # 监控30秒
|
||
time.sleep(1)
|
||
status = recording_manager.get_status()
|
||
|
||
if status['recording']:
|
||
perf = status['performance']
|
||
print(f"[{i+1:2d}s] CPU: {perf['cpu_percent']:.1f}% | "
|
||
f"内存: {perf['memory_percent']:.1f}% | "
|
||
f"当前帧率: {status['current_fps']:.1f}fps | "
|
||
f"跳帧: {status['frame_skip_count']}")
|
||
|
||
# 如果CPU或内存超过阈值,显示警告
|
||
if perf['cpu_percent'] > perf['cpu_threshold']:
|
||
print(f" ⚠️ CPU使用率超过阈值 ({perf['cpu_threshold']}%)")
|
||
if perf['memory_percent'] > perf['memory_threshold']:
|
||
print(f" ⚠️ 内存使用率超过阈值 ({perf['memory_threshold']}%)")
|
||
else:
|
||
print("录制已停止")
|
||
break
|
||
|
||
# 在单独线程中监控性能
|
||
monitor_thread = threading.Thread(target=monitor_performance)
|
||
monitor_thread.start()
|
||
|
||
# 等待监控完成
|
||
monitor_thread.join()
|
||
|
||
except KeyboardInterrupt:
|
||
print("\n用户中断测试")
|
||
except Exception as e:
|
||
print(f"测试过程中发生错误: {e}")
|
||
finally:
|
||
# 停止录制
|
||
print("停止录制...")
|
||
stop_result = recording_manager.stop_recording()
|
||
if stop_result['success']:
|
||
print(f"录制已停止,视频文件: {stop_result.get('video_files', [])}")
|
||
else:
|
||
print(f"停止录制失败: {stop_result['message']}")
|
||
|
||
def test_performance_configuration():
|
||
"""
|
||
测试性能配置功能
|
||
"""
|
||
print("\n测试性能配置功能...")
|
||
|
||
recording_manager = RecordingManager()
|
||
|
||
# 测试各种配置
|
||
print("测试CPU阈值配置:")
|
||
recording_manager.configure_performance_settings(cpu_threshold=60)
|
||
recording_manager.configure_performance_settings(cpu_threshold=40) # 应该被限制到50
|
||
recording_manager.configure_performance_settings(cpu_threshold=100) # 应该被限制到95
|
||
|
||
print("\n测试帧率配置:")
|
||
recording_manager.configure_performance_settings(min_fps=15, max_fps=25)
|
||
recording_manager.configure_performance_settings(min_fps=35, max_fps=20) # min > max,应该调整
|
||
|
||
print("\n当前状态:")
|
||
status = recording_manager.get_status()
|
||
perf = status['performance']
|
||
print(f"CPU阈值: {perf['cpu_threshold']}%")
|
||
print(f"内存阈值: {perf['memory_threshold']}%")
|
||
print(f"自适应帧率: {status['adaptive_fps_enabled']}")
|
||
print(f"当前帧率: {status['current_fps']}fps")
|
||
|
||
if __name__ == "__main__":
|
||
print("屏幕录制性能测试")
|
||
print("=" * 50)
|
||
|
||
# 测试配置功能
|
||
test_performance_configuration()
|
||
|
||
# 询问是否进行实际录制测试
|
||
response = input("\n是否进行实际录制测试?(y/n): ")
|
||
if response.lower() in ['y', 'yes', '是']:
|
||
test_screen_recording_performance()
|
||
else:
|
||
print("跳过录制测试")
|
||
|
||
print("\n测试完成") |