如何用Python获取视频每帧时间戳并以00:00:00格式命名保存图片?
将视频帧保存为时间戳命名的图片
你可以通过计算每帧对应的视频时间戳来实现文件名的修改,核心是利用视频帧率将帧序号转换为时分秒格式。以下是修改后的完整代码:
import cv2 import os cam = cv2.VideoCapture("/content/AI_PPT_video.mp4") # 获取视频帧率 fps = cam.get(cv2.CAP_PROP_FPS) if fps <= 0: raise ValueError("无法获取视频帧率,请检查视频文件是否有效") try: if not os.path.exists('data'): os.makedirs('data') except OSError: print('创建目录失败') currentframe = 0 while True: ret, frame = cam.read() if ret: # 计算当前帧对应的总秒数 total_seconds = currentframe / fps # 转换为时分秒格式 hours = int(total_seconds // 3600) remaining_seconds = total_seconds % 3600 minutes = int(remaining_seconds // 60) seconds = int(remaining_seconds % 60) # 格式化时间戳为00:00:00格式 timestamp = f"{hours:02d}:{minutes:02d}:{seconds:02d}" # 生成文件名 name = f'./data/{timestamp}.jpg' print(name) cv2.imwrite(name, frame) currentframe += 1 else: break cam.release() cv2.destroyAllWindows()
关键说明:
- 获取帧率:
cam.get(cv2.CAP_PROP_FPS)用于获取视频的每秒帧数,是帧序号转时间戳的核心依据。 - 时间戳计算:通过
currentframe / fps得到当前帧对应的总秒数,再用整除和取余运算分解为小时、分钟、秒。 - 格式化补零:使用
f"{value:02d}"确保小时、分钟、秒都是两位数字,不足时自动补零,比如1秒会显示为00。
兼容性提示:
如果是Windows系统,文件名不能包含冒号(:),可以将时间戳格式改为下划线分隔,比如:
timestamp = f"{hours:02d}_{minutes:02d}_{seconds:02d}"
内容的提问来源于stack exchange,提问作者CodeBunnyღ
相关产品推荐
相关产品推荐

