59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
import requests
|
|
import time
|
|
from datetime import datetime
|
|
|
|
url = "http://10.68.66.174/mix.wav"
|
|
duration_minutes = 60 # 录制时长(分钟)
|
|
output_file = f"recording_{datetime.now().strftime('%Y%m%d_%H%M%S')}.wav"
|
|
|
|
duration_seconds = duration_minutes * 60
|
|
print(f"开始录制音频流...")
|
|
print(f"录制时长: {duration_minutes} 分钟")
|
|
print(f"保存路径: {output_file}")
|
|
|
|
start_time = time.time()
|
|
chunk_size = 8192
|
|
total_bytes = 0
|
|
last_print_time = 0
|
|
|
|
try:
|
|
response = requests.get(url, stream=True, timeout=60)
|
|
response.raise_for_status()
|
|
|
|
with open(output_file, 'wb') as f:
|
|
for chunk in response.iter_content(chunk_size=chunk_size):
|
|
if chunk:
|
|
f.write(chunk)
|
|
total_bytes += len(chunk)
|
|
|
|
elapsed = time.time() - start_time
|
|
|
|
# 每10秒打印一次进度
|
|
if int(elapsed) - last_print_time >= 10:
|
|
last_print_time = int(elapsed)
|
|
size_mb = total_bytes / (1024 * 1024)
|
|
remaining = int(duration_seconds - elapsed)
|
|
print(f"已录制: {int(elapsed)}秒 / {duration_seconds}秒 ({elapsed/duration_seconds*100:.1f}%), 大小: {size_mb:.2f}MB, 剩余: {remaining}秒")
|
|
|
|
# 达到指定时长后自动停止
|
|
if elapsed >= duration_seconds:
|
|
print(f"\n已达到指定录制时长 {duration_minutes} 分钟")
|
|
break
|
|
|
|
elapsed = time.time() - start_time
|
|
size_mb = total_bytes / (1024 * 1024)
|
|
print(f"\n录制完成!")
|
|
print(f"总时长: {int(elapsed)}秒 ({elapsed/60:.1f}分钟)")
|
|
print(f"文件大小: {size_mb:.2f}MB")
|
|
print(f"保存路径: {output_file}")
|
|
|
|
except KeyboardInterrupt:
|
|
elapsed = time.time() - start_time
|
|
size_mb = total_bytes / (1024 * 1024)
|
|
print(f"\n录制已手动停止")
|
|
print(f"总时长: {int(elapsed)}秒 ({elapsed/60:.1f}分钟)")
|
|
print(f"文件大小: {size_mb:.2f}MB")
|
|
print(f"保存路径: {output_file}")
|
|
except Exception as e:
|
|
print(f"错误: {e}")
|