opencv读取视频文件夹内视频的名字_时长_帧率_分辨率写入excel-cnblog
看视频的时候有的视频文件名贼长。想要翻看,在文件夹里根本显示不出来,缩短又会丢失一些信息,所以我写了一份Python代码,直接获取视频的名字,时长,帧率,还有分辨率写到excel里。
实际效果如下图。

可以看到需要的大致信息都被提取出来了
接下来直接上代码
import os
import xlsxwriter as xw
import cv2# 从文件中获取视频名称列表和视频网址列表
def getUrlName(filename):_urlList = [] # 视频网址列表_fileList = [] # 视频名称列表# 读取文件内容,并分离视频名称和网址with open(filename, 'r', encoding='utf-8') as f:data = f.readlines()for i in range(len(data)):if i % 2 == 0: # 偶数行为视频名称_fileList.append(data[i].strip('\n'))else: # 奇数行为视频网址_urlList.append(data[i].strip('\n'))return _urlList, _fileList# 获取单个视频文件的时长
def getFileDuration(filename):file_time = 0 # 初始化视频时长cap = cv2.VideoCapture(filename) # 打开视频文件if cap.isOpened(): # 如果视频成功打开rate = cap.get(cv2.CAP_PROP_FPS) # 获取视频帧率# 视频的宽高(分辨率)video_width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)video_height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)frame_num = cap.get(cv2.CAP_PROP_FRAME_COUNT) # 获取视频总帧数duration = int(frame_num / rate) # 计算视频时长(秒)minutes = duration // 60 # 计算分钟数sec = duration % 60 # 计算剩余秒数res = "{:02d}:{:02d}".format(minutes, sec) # 格式化时长为分钟:秒cap.release() # 释放视频文件return res, rate,video_width,video_height # 返回视频时长else:return file_time, file_time,file_time,file_time # 如果视频打开失败,返回0# 获取指定文件夹内的所有文件名
def getAllFiles(_dirName):# print(os.listdir(_dirName))return os.listdir(_dirName) # 返回文件夹内的文件列表# 使用xlsxwriter库将视频名称和时长列表写入Excel文件
def xw_toExcel(_fileList, _durationList,rates,w,h, fileName):workbook = xw.Workbook(fileName) # 创建一个新的Excel工作簿worksheet1 = workbook.add_worksheet("sheet1") # 在工作簿中添加一个名为"sheet1"的工作表worksheet1.activate() # 激活工作表,准备写入数据title = ['序号', '视频名', '视频时长', '帧率',"分辨率"] # 定义表头标题worksheet1.write_row('A1', title) # 从A1单元格开始写入表头标题i = 2 # 设置数据写入的起始行号为2(即Excel中的第三行)for j in range(len(_fileList)):insertData = [j + 1, _fileList[j], _durationList[j],rates[j],"{}x{}".format(w[j],h[j])] # 准备要写入的数据:序号、视频名、视频时长row = 'A' + str(i) # 构建写入数据的行地址,例如'A2'、'A3'等worksheet1.write_row(row, insertData) # 将数据写入到指定行i += 1 # 行号递增,准备写入下一行数据workbook.close() # 完成数据写入后关闭工作簿# 程序的主函数
def main(SPWZ, folder_name):fileName = getAllFiles(SPWZ) # 获取指定文件夹内的所有文件名print(fileName)duration = [] # 初始化视频时长列表rates = [] # 初始化帧率w = []h = []for item in fileName: # 遍历每个文件a, b,c,d = getFileDuration(SPWZ + "/" + item) # 获取每个视频文件的时长duration.append(a) # 将时长添加到时长列表中rates.append(b) # 将帧率添加到时长列表中w.append(c)h.append(d)# 将视频名称和时长写入Excel文件xw_toExcel(fileName, duration, rates, w,h,folder_name + '.xlsx') # 调用xw_toExcel函数,写入数据到'test.xlsx'文件中if __name__ == '__main__':SPWZ = input("请输入要加载的视频位置:")SPWZ = SPWZ.replace('\\', '/')print(SPWZ)folder_name = os.path.basename(SPWZ)main(SPWZ, folder_name)
介绍一下这套代码的使用流程

运行之后它会提示要加载的视频位置在哪里,输入之后回车生成的Excel文件会以那个文件夹命名
注意这需要open CV库的支持,要学会如何安装Python的库。
解决不了的加

相关文章:
opencv读取视频文件夹内视频的名字_时长_帧率_分辨率写入excel-cnblog
看视频的时候有的视频文件名贼长。想要翻看,在文件夹里根本显示不出来,缩短又会丢失一些信息,所以我写了一份Python代码,直接获取视频的名字,时长,帧率,还有分辨率写到excel里。 实际效果如下图…...
js对象的方法速览---数组的静态方法,实例方法和属性合集,各包含一个示例
tip: 本文仅作为查找和基本使用的展示,需要深入了解这些方法的使用请参考:Object - JavaScript | MDN (mozilla.org) 可以通过目录快速锁定需要查找的方法和查看它的使用 目录 tip: 新建一个对象 实例属性 实例方法 hasOwn…...
Redis基础教程(十四):Redis连接
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...
GraphRAG——一个基于图的检索增强生成的开源项目【送源码】
GraphRAG 最近几天,微软团队开源了GraphRAG,这是一种基于图(Graph)的检索增强生成方法。 先说说RAG吧,检索增强生成,相当于是从一个给定好的知识库中进行检索,接入LLM模型,让模型生…...
什么是 VueQuill(前端的富文本编辑器)?
什么是 VueQuill? 1. 简介 VueQuill 是 Vue.js 的一个富文本编辑器插件,它基于 Quill 编辑器构建,提供了简洁且功能强大的富文本编辑功能。Quill 是一个现代化的富文本编辑器,提供丰富的文本编辑能力,支持多种格式和…...
从海上长城到数字防线:视频技术在海域边防现代化中的创新应用
随着全球化和科技发展的加速,海域安全问题日益凸显其重要性。海域边防作为国家安全的第一道防线,其监控和管理面临着诸多挑战。近年来,视频技术的快速发展为海域边防场景提供了新的解决方案,其高效、实时、远程的监控特点极大地提…...
《信息技术与信息化 》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答 问:《信息技术与信息化 》是不是核心期刊? 答:不是,是知网收录的第一批认定学术期刊。 问:《信息技术与信息化 》级别? 答:省级。主管单位:山东省科学技术协会 主办单…...
【最新版】手把手Claude 3.5 Sonnet 详细步骤注册方法!
目录 01 Claude 3.5 Sonnet 是什么 02 Claude 3.5 Sonnet 注册方法 Step1:注册 Wildcard Step2:注册Claude3.5 Step3:接收并输入验证 03 使用Claude 3.5 Sonnet 04 升级Claude 3 Opus 05 结语 01 Claude 3.5 Sonnet 是什么 蛰伏了三…...
代理模式和Java中的动态代理【开发实践】
文章目录 一、代理模式基础1.1 代理模式1.2 静态代理1.3 动态代理 二、静态代理的实现三、JDK动态代理3.1 JDK动态代理概述3.2 invoke方法介绍3.3 JDK动态代理的使用 四、CGLIB动态代理3.1 CGLIB动态代理概述3.2 CGLIB动态代理的使用 五、对比5.1 代理实现与使用对比5.2 使用条…...
【Linux】进程间通信——匿名管道
目录 为什么要进行进程间通信? 匿名管道的具体实现 pipe创建内存级文件形成管道 pipe的简单使用 匿名管道的四种情况和五种特性 四种情况 五种特性 PIPE_BUF 命令行管道 | 功能代码:创建进程池 为什么要进行进程间通信? 1.数据传输&…...
React Native与React Native Web:跨平台开发的新选择
React Native和React Native Web是两种基于React框架的跨平台开发技术,它们分别针对原生移动应用和Web应用的开发,但都提供了统一的开发体验和代码复用能力。 React Native 概述 React Native允许开发者使用React的组件化思想和JavaScript编写原生级别…...
【从零开始实现stm32无刷电机FOC】【理论】【3/6 位置、速度、电流控制】
目录 PID控制滤波单独位置控制单独速度控制单独电流控制位置-速度-电流串级控制 上一节,通过对SVPWM的推导,我们获得了控制电机转子任意受力的能力。本节,我们选用上节得到的转子dq轴解耦的SVPWM形式,对转子受力进行合理控制&…...
使用MySQLInstaller配置MySQL
操作步骤 1.配置High Availability 默认选项Standalone MySQL Server classic MySQL Replication 2.配置Type and Networking ◆端口默认启用TCP/P网络 ◆端口默认为3306 3.配置Account and Roles 设置root账户的密码、添加其他管理员 4.配置Windows Service ◆配置MySQL Serv…...
命令执行(RCE)面对各种过滤,骚姿势绕过总结
1、什么是RCE RCE又称远程代码执行漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。 2、RCE产生原因 服务器没有对执行命令的函数做严格的过滤,最终导致命令被执行。 3、命令执行函数 PHP代码执行函数…...
复杂的数仓项目,涵盖了从数据采集、处理、存储到可视化的整个流程
一个复杂的数仓项目,涵盖了从数据采集、处理、存储到可视化的整个流程。以下是对您提供信息的梳理和解释: 1. **项目架构**: - 包含实时流、离线流和配置流三条数据流。 - 数据源使用MySQL,开启binlog日志。 2. **数据采集…...
三相感应电机的建模仿真(3)基于ABC相坐标系Level2 S-Fun以及定子串不对称电抗起动过程仿真分析
1. 概述 2. 三相感应电动机状态方程式 3. 基于Level2 S-Function的仿真模型建立 4. 动态分析实例 5. 总结 6. 参考文献 1. 概述 三相感应电机自然坐标系下的数学模型是一组周期性变系数微分方程(其电感矩阵是转子位置角的函数,转子位置角随时间按正弦规律变化),将其用…...
了解Adam和RMSprop优化算法
优化算法是机器学习和深度学习模型训练中至关重要的部分。本文将详细介绍Adam(Adaptive Moment Estimation)和RMSprop(Root Mean Square Propagation)这两种常用的优化算法,包括它们的原理、公式和具体代码示例。 RMS…...
对于配置LLM,集显和独显的具体区别和影响
在配置大型语言模型(LLM)时,集成显卡(集显)和独立显卡(独显)之间的区别和影响主要体现在以下几个方面: 1. 性能差异 集成显卡(集显): 集显通常集…...
uniapp上架到appstore遇到的问题
1、appstore在美国审核,需要把服务器接口的国外访问权限放开 2、登陆部分 a、审核时只能有密码登陆,可以通过接口响应参数将其他登陆方式暂时隐藏,审核成功后放开即可 b、需要有账号注销功能 3、使用照相机和相册功能时需要写清楚描述文案...
每天10个vue面试题(一)
1. Vue的基本原理? 当一个Vue实例创建时,Vue会遍历data中的属性,用Object.defineProperty(vue3.0使用proxy )将它们转为 getter/setter,并且在内部追踪相关依赖,在属性被访问和修改时通知变化。…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
