用Python批量获取视频长度、分辨率、创建时间 – Yaodo Blog

您所在的位置:网站首页 长度分辨率 用Python批量获取视频长度、分辨率、创建时间 – Yaodo Blog

用Python批量获取视频长度、分辨率、创建时间 – Yaodo Blog

2024-07-14 02:28| 来源: 网络整理| 查看: 265

这次的教程也有MD(docsify)版本:

https://www.imtrq.com/docs/#/用Python批量获取视频长度、分辨率、创建时间

用到的库 easygui:选择文件夹;os:获取创建时间、修改时间、文件名、遍历文件夹;cv2(opencv-python):获取视频长度、分辨率;pandas:导出Excel;datetime:格式化时间戳。 代码

大部分是网上抄的,我也找不到最初的来源了:

import os import cv2 import pandas as pd from easygui import diropenbox as set_dir from datetime import datetime def get_video_duration(filename): try: cap = cv2.VideoCapture(filename) except: return 0,0,0 if cap.isOpened(): rate = cap.get(5) frame_num =cap.get(7) duration = frame_num/rate width = cap.get(3) height = cap.get(4) return duration, width, height return 0,0,0 def get_time(timestamp): return datetime.strftime(datetime.fromtimestamp(timestamp), '%Y-%m-%d %H:%M:%S') path = set_dir() file_li = [] for r,ds,fs in os.walk(path): for f in fs: filename=os.path.join(r,f) size = os.path.getsize(filename) create_time = get_time(os.path.getctime(filename)) access_time = get_time(os.path.getatime(filename)) modified_time = get_time(os.path.getmtime(filename)) duration, width, height = get_video_duration(filename) file_li.append([filename, size, duration, width, height, create_time, access_time, modified_time]) df = pd.DataFrame(file_li) df.columns = ['文件路径', '大小', '时长', '宽度', '高度', '创建日期', '访问日期', '修改日期'] df.to_excel(os.path.join(os.path.dirname(__file__), 'files.xlsx'), index=None) 附录

OpenCV VideoCapture.get()参数详解 原文地址

paramdefinecv2.VideoCapture.get(0)视频文件的当前位置(播放)以毫秒为单位cv2.VideoCapture.get(1)基于以0开始的被捕获或解码的帧索引cv2.VideoCapture.get(2)视频文件的相对位置(播放):0=电影开始,1=影片的结尾。cv2.VideoCapture.get(3)在视频流的帧的宽度cv2.VideoCapture.get(4)在视频流的帧的高度cv2.VideoCapture.get(5)帧速率cv2.VideoCapture.get(6)编解码的4字-字符代码cv2.VideoCapture.get(7)视频文件中的帧数cv2.VideoCapture.get(8)返回对象的格式cv2.VideoCapture.get(9)返回后端特定的值,该值指示当前捕获模式cv2.VideoCapture.get(10)图像的亮度(仅适用于照相机)cv2.VideoCapture.get(11)图像的对比度(仅适用于照相机)cv2.VideoCapture.get(12)图像的饱和度(仅适用于照相机)cv2.VideoCapture.get(13)色调图像(仅适用于照相机)cv2.VideoCapture.get(14)图像增益(仅适用于照相机)(Gain在摄影中表示白平衡提升)cv2.VideoCapture.get(15)曝光(仅适用于照相机)cv2.VideoCapture.get(16)指示是否应将图像转换为RGB布尔标志cv2.VideoCapture.get(17)× 暂时不支持cv2.VideoCapture.get(18)立体摄像机的矫正标注(目前只有DC1394 v.2.x后端支持这个功能)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3