chore: 批量新增各类工具脚本与配置文件
1. 新增音频录制、下载、上传相关脚本 2. 新增数据库操作、API调用工具 3. 新增Excel数据处理脚本 4. 新增弱密码检测脚本
This commit is contained in:
+90
@@ -0,0 +1,90 @@
|
||||
import subprocess
|
||||
import time
|
||||
from datetime import datetime
|
||||
import os
|
||||
|
||||
# RTSP 流地址
|
||||
rtsp_url = "rtsp://10.68.66.174/audio"
|
||||
|
||||
# 录制时长(分钟)
|
||||
duration_minutes = 60
|
||||
output_filename = f"rtsp_recording_{datetime.now().strftime('%Y%m%d_%H%M%S')}.wav"
|
||||
|
||||
print(f"开始录制 RTSP 音频流...")
|
||||
print(f"RTSP 地址: {rtsp_url}")
|
||||
print(f"录制时长: {duration_minutes} 分钟")
|
||||
print(f"保存路径: {output_filename}")
|
||||
print(f"按 Ctrl+C 停止录制")
|
||||
print("-" * 50)
|
||||
|
||||
# 转换为秒
|
||||
duration_seconds = duration_minutes * 60
|
||||
|
||||
try:
|
||||
# 使用 ffmpeg 录制 RTSP 流
|
||||
# -rtsp_transport tcp 使用 TCP 协议,更稳定
|
||||
# -t 指定录制时长
|
||||
# -acodec pcm_s16le 输出 PCM WAV 格式
|
||||
cmd = [
|
||||
'ffmpeg',
|
||||
'-rtsp_transport', 'tcp',
|
||||
'-i', rtsp_url,
|
||||
'-t', str(duration_seconds),
|
||||
'-acodec', 'pcm_s16le',
|
||||
'-ar', '16000', # 采样率
|
||||
'-ac', '1', # 单声道
|
||||
'-y', # 覆盖已存在的文件
|
||||
output_filename
|
||||
]
|
||||
|
||||
print(f"执行命令: {' '.join(cmd)}")
|
||||
print("开始录制...")
|
||||
|
||||
# 执行 ffmpeg 命令
|
||||
process = subprocess.Popen(
|
||||
cmd,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
universal_newlines=True
|
||||
)
|
||||
|
||||
# 用于跟踪进度的变量
|
||||
start_time = time.time()
|
||||
last_size = 0
|
||||
|
||||
# 实时输出 ffmpeg 的日志
|
||||
for line in iter(process.stdout.readline, ''):
|
||||
if line:
|
||||
# 检查文件大小变化
|
||||
if os.path.exists(output_filename):
|
||||
current_size = os.path.getsize(output_filename)
|
||||
if current_size != last_size:
|
||||
elapsed = time.time() - start_time
|
||||
size_mb = current_size / (1024 * 1024)
|
||||
progress = (elapsed / duration_seconds) * 100 if duration_seconds > 0 else 0
|
||||
print(f"进度: {int(elapsed)}秒 / {duration_seconds}秒 ({progress:.1f}%), 大小: {size_mb:.2f}MB", end='\r')
|
||||
last_size = current_size
|
||||
|
||||
process.wait()
|
||||
|
||||
# 录制完成
|
||||
elapsed = time.time() - start_time
|
||||
if os.path.exists(output_filename):
|
||||
size_mb = os.path.getsize(output_filename) / (1024 * 1024)
|
||||
print(f"\n\n录制完成!")
|
||||
print(f"总时长: {int(elapsed)}秒 ({elapsed/60:.1f}分钟)")
|
||||
print(f"文件大小: {size_mb:.2f}MB")
|
||||
print(f"保存路径: {os.path.abspath(output_filename)}")
|
||||
else:
|
||||
print("\n录制失败,文件未生成")
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print(f"\n\n录制已手动停止")
|
||||
if os.path.exists(output_filename):
|
||||
size_mb = os.path.getsize(output_filename) / (1024 * 1024)
|
||||
elapsed = time.time() - start_time
|
||||
print(f"已录制: {int(elapsed)}秒")
|
||||
print(f"文件大小: {size_mb:.2f}MB")
|
||||
print(f"保存路径: {os.path.abspath(output_filename)}")
|
||||
except Exception as e:
|
||||
print(f"\n错误: {e}")
|
||||
Reference in New Issue
Block a user