You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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ღ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:30:13