Python OpenCV如何将毫秒时间戳转为HH:MM:SS格式命名视频帧
毫秒转HH:MM:SS:百分秒格式时间戳实现方案
无需引入额外第三方工具库,直接通过数值计算即可完成格式转换,轻量无额外依赖。
转换逻辑
从CAP_PROP_POS_MSEC获取到的是当前帧对应的总毫秒数,按时间单位逐级拆分即可得到各段数值:
- 小时:总毫秒数 // 3600000(1小时折合3600000毫秒)
- 分钟:(总毫秒数 % 3600000) // 60000(1分钟折合60000毫秒)
- 秒:(总毫秒数 % 60000) // 1000
- 末尾百分秒段:(总毫秒数 % 1000) // 10(百分秒单位为10毫秒,整除10后得到0-99范围的数值,补零到两位即可)
注意:Windows系统下冒号
:属于文件名非法字符,如果运行环境为Windows,建议将时间戳中的冒号替换为下划线_或短横线-,避免文件写入失败。
修正后代码
import cv2 def msec_to_timestamp(total_msec): total_msec = int(round(total_msec)) hours = total_msec // 3600_000 remain = total_msec % 3600_000 minutes = remain // 60_000 remain = remain % 60_000 seconds = remain // 1000 centiseconds = (remain % 1000) // 10 return f"{hours:02d}:{minutes:02d}:{seconds:02d}:{centiseconds:02d}" vidcap = cv2.VideoCapture('video.mp4') success, frame = vidcap.read() cont = 0 while success: frame_msec = vidcap.get(cv2.CAP_PROP_POS_MSEC) timestamp_str = msec_to_timestamp(frame_msec) filename = f'frame{cont} {timestamp_str}.jpg' cv2.imwrite(filename, frame) success, frame = vidcap.read() cont += 1
效果说明
传入总毫秒值1050(对应1.05秒)时,转换函数返回00:00:01:05,完全匹配预期命名格式。
内容的提问来源于stack exchange,提问作者AMM
相关产品推荐
相关产品推荐

