opencv读取视频文件夹内视频的名字_时长_帧率_分辨率写入excel-cnblog

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

实际效果如下图。

image-20240709212219287

可以看到需要的大致信息都被提取出来了

接下来直接上代码

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)

介绍一下这套代码的使用流程

image-20240709212322255

运行之后它会提示要加载的视频位置在哪里,输入之后回车生成的Excel文件会以那个文件夹命名

注意这需要open CV库的支持,要学会如何安装Python的库。
解决不了的加

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

imx6ull/linux应用编程学习(15) 移植MQTT客户端库

1. 准备开发环境 确保你的Ubuntu系统已经安装了必要的工具和依赖项。打开终端并运行以下命令: sudo apt update sudo apt install build-essential cmake git2. 获取MQTT库 git clone https://github.com/eclipse/paho.mqtt.c.git cd paho.mqtt.c3. 编译MQTT库 mk…

教程系列1 | 趋动云『社区项目』极速部署 SD WebUI

在上周,趋动云新推出的『社区项目』功能,以“一键克隆”的极致便捷与“省时省力”的高效体验,赢得了广大用户的关注。 随后,启动趋动云『社区项目』教程系列,旨在从零开始,全方位、手把手地引领您深入探索…

实现双向循环链表的 创建、判空、尾插、遍历、尾删、销毁

#include "link.h"//create DoubleLink head node DoubleLink_p DoubleLink_create() {DoubleLink_p H (DoubleLink_p)malloc(sizeof(DoubleLink));if(NULL H){printf("失败");return NULL;}H -> len 0;H -> next H;H -> prior H;printf(&qu…

044基于SSM+Jsp的个性化影片推荐系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

安装nodejs | npm报错

nodejs安装步骤: 官网:https://nodejs.org/en/ 在官网下载nodejs: 双击下载下来的msi安装包,一直点next,我选的安装目录是默认的: 测试是否安装成功: 输入cmd打开命令提示符,输入node -v可以看到版本,说…

JVM原理(二四):JVM虚拟机锁优化

高效并发是从JDK 5升级到JDK 6后一项重要的改进项,HotSpot虛 拟机开发团队在这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋( Adaptive Spinning)、锁消除( Lock Elimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight Locking)、…

代码随想录打卡第十八天

代码随想录–二叉树部分 day 17 休息日 day 18 二叉树第五天 文章目录 代码随想录--二叉树部分一、力扣654--最大二叉树二、力扣617--合并二叉树三、力扣700--二乘树中的搜素四、力扣98--验证二叉搜索树 一、力扣654–最大二叉树 代码随想录题目链接:代码随想录 给…

初识CPlusPlus

前言 也是好久没写博客了,那些天也没闲着,去练题去了。实际上练题也可以写练题的博客,但是觉得太简单了些,于是就没有继续写下去。如今又回来写博客,是因为有整理了新的知识C。内容不算多,大多数都是书本上…

证件照片换背景底色 免费 证件照片制作软件免费下载 证件照换衣服软件免费有哪些好用

证件照是我们身份认证的重要凭证,其质量和专业性都很重要。然而,很多时候,由于各种原因,我们可能无法在拍摄证件照时穿上合适的服装,这就给证件照的质量和形象带来了一定的影响。幸运的是,现在市面上出现了…

【保姆级介绍下C语言中的运算符的优先级】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🧇C语言中的运算符的优先级 🧇C语言中的运算符的优先级决定了表达…

DOM(文档对象模型)生命周期事件

前言 DOM 生命周期事件涉及到从创建、更新到销毁 DOM 元素的不同阶段。 ● 我们来看下当HTML文档加载完再执行JavaScript代码 document.addEventListener(DOMContentLoaded, function (e) {console.log(HTML parsed adn DOM tree built!, e); })● 除此之外,浏览…

单链表(C语言详细版)

1. 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表的结构跟火车车厢相似,淡季时车次的车厢会相应减少,旺季时车次的车厢会额外增加几节。…

Day65 代码随想录打卡|回溯算法篇---组合总和II

题目(leecode T40): 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含…

Linux文件编程(打开/创建写入读取移动光标)

目录 一、如何在Linux下做开发 1.vi编辑器 2.gcc编译工具 3.常用指令 二、文件打开及创建 三、写入文件 四、读取文件 五、文件“光标”位置 一、如何在Linux下做开发 所谓文件编程,就是对文件进行操作,Linux的文件和Windows系统的文件大差不差…

Python函数 之 函数基础

print() 在控制台输出 input() 获取控制台输⼊的内容 type() 获取变量的数据类型 len() 获取容器的⻓度 (元素的个数) range() ⽣成⼀个序列[0, n) 以上都是我们学过的函数,函数可以实现⼀个特定的功能。我们将学习⾃⼰如何定义函数, 实现特定的功能。 1.函数是什么…

氛围感视频素材高级感的去哪里找啊?带氛围感的素材网站库分享

亲爱的创作者们,大家好!今天我们来聊聊视频创作中至关重要的一点——氛围感。一个好的视频,不仅要有视觉冲击力,还要能够触动观众的情感。那我们应该去哪里寻找这些充满氛围感且高级的视频素材呢?别急,我这…

打开IDEA,程序员思考的永远只有两件事!!!

微信公众号:牛奶 Yoka 的小屋 有任何问题。欢迎来撩~ 最近更新:2024/07/09 [大家好,我是牛奶。] 当年面试时背了很多八股文,但在日渐重复的机械工作中(产品业务开发),计算机网络、操作系统、算…

混合贪心算法求解地铁线路调度

一、问题描述 城市轨道交通的繁荣发展,带来了车辆资源需求的日益增加。如何兼顾运营服务水平和运营成本,以最少的车底优质地完成运输任务成为一大严峻问题。本题在后续的描述中将由多辆动车和拖车组合而成的车组称为车底。在日常的运营组织中&#xff0…

【文档智能】LACE:帮你自动生成文档布局的方法浅尝

前言 往期很多文章都介绍了【文档智能】上布局识别(版式分析)的技术思路,版式分析是通过对文档版式进行布局识别,识别文档中的元素类型的过程。这次来看看一个有趣的思路,通过已有的元素类型,来生成可控的…

赠你一只金色的眼 - 富集分析和表达数据可视化

GOplot包介绍 GOplot包用于生物数据的可视化。更确切地说,该包将表达数据与功能分析的结果整合并进行可视化。但是要注意该包不能用于执行这些分析,只能把分析结果进行可视化。在所有科学领域,由于空间限制和结果所需的简洁性,切…