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

使用cv2将视频转换为帧时如何调整每秒帧率(FPS)?

问题解答

问题1:关于帧率的默认设置说明

你当前的代码没有做任何帧率限制,拿到的24FPS是源视频2017_08_31_0121.mp4本身的固有属性,不存在全局默认帧率的说法:

  • 不同视频的帧率由文件压制时的参数决定,24FPS是电影、流媒体内容的常用帧率,25FPS是PAL制式广播电视的常用帧率,30/60FPS是高帧率内容的常用参数
  • 如果你需要读取源视频的自带帧率,可以调用OpenCV内置API获取:vidcap.get(cv2.CAP_PROP_FPS)

问题2:自定义10FPS抽帧的修改方案

实现逻辑为:先读取源视频的原始帧率,计算对应的抽帧间隔,仅保存符合间隔要求的帧即可,修改后的代码如下:

import cv2
import math

# 自定义目标帧率,可按需修改
TARGET_FPS = 10
vidcap = cv2.VideoCapture('/content/2017_08_31_0121.mp4')
# 获取源视频原始帧率
original_fps = vidcap.get(cv2.CAP_PROP_FPS)
# 计算抽帧间隔
frame_interval = original_fps / TARGET_FPS

success, image = vidcap.read()
count = 0
save_count = 0
while success:
    # 仅当前帧符合抽帧间隔要求时才保存,避免非整数帧率导致的累计误差
    if math.floor(count / frame_interval) > math.floor((count - 1) / frame_interval):
        if save_count < 10:
            id = f'00{save_count}'
        elif save_count < 100:
            id = f'0{save_count}'
        else:
            id = save_count
        cv2.imwrite(f"./new_frames/frame{id}.jpg", image)
        save_count += 1
    success, image = vidcap.read()
    count += 1

修改后你只需要调整TARGET_FPS的数值,就可以输出对应帧率的帧文件,10FPS参数下21秒的视频最终会得到约210帧。

内容的提问来源于stack exchange,提问作者Saeed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:00:06