Python视频帧转时间码及指定帧截取与分辨率调整

花开有时
花开有时
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍如何利用Python将视频帧数转换为标准时间码格式,并结合OpenCV实现指定帧范围的截取与分辨率调整。通过示例代码展示关键参数设置,如帧率、尺寸及写入逻辑,帮助开发者解决视频处理中的常见需求。

Python视频帧转时间码实现

直接展示核心实现代码。


def frames_to_timecode(framerate,frames):
 """
 视频 通过视频帧转换成时间
 :param framerate: 视频帧率
 :param frames: 当前视频帧数
 :return:时间(00:00:01:01)
 """
 return '{0:02d}:{1:02d}:{2:02d}:{3:02d}'.format(int(frames / (3600 * framerate)),
             int(frames / (60 * framerate) % 60),
             int(frames / framerate % 60),
             int(frames % framerate))

print(frames_to_timecode(25,123))

00:00:04:23

补充说明:使用Python结合OpenCV截取指定帧视频段并转换分辨率的方法。

网络上相关解决方案较少且多为重复内容,经多次尝试与修正后成功实现,以下直接提供代码示例。

OpenCV截取指定帧与分辨率调整


import cv2
videoCapture = cv2.VideoCapture('K:/test/00000.mov')
fps = 30 # 保存视频的帧率
size = (350, 256) # 保存视频的大小
 
videoWriter = cv2.VideoWriter('K:/test/0000_test.avi', cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'), fps, size)
i = 0
 
while True:
 success, frame = videoCapture.read()
 if success:
  i += 1
  print('i = ', i)
  if (i >= 1000 and i <= 2000):
   frame=cv2.resize(frame,(350,256))
   videoWriter.write(frame)
 
  if(i>2000):
   break
 else:
  print('end')
  break

原视频格式建议转换为.mov(仅在测试中确认该格式成功,其他格式可自行验证)。若需调整分辨率,必须执行以下操作:

frame=cv2.resize(frame,(350,256))

此步骤不可或缺,否则视频帧无法写入,导致输出视频大小为0。

如有不足之处欢迎指正,希望以上内容能对您有所帮助。

以上关于Python将视频通过帧转换为时间的实例分享完毕,供参考使用,欢迎支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表