做电商网站必需知道qc,wordpress没了,苏州网站建设方案策划,wordpress用户名忘记看视频的时候有的视频文件名贼长。想要翻看#xff0c;在文件夹里根本显示不出来#xff0c;缩短又会丢失一些信息#xff0c;所以我写了一份Python代码#xff0c;直接获取视频的名字#xff0c;时长#xff0c;帧率#xff0c;还有分辨率写到excel里。
实际效果如下图…看视频的时候有的视频文件名贼长。想要翻看在文件夹里根本显示不出来缩短又会丢失一些信息所以我写了一份Python代码直接获取视频的名字时长帧率还有分辨率写到excel里。
实际效果如下图。 可以看到需要的大致信息都被提取出来了
接下来直接上代码
import os
import xlsxwriter as xw
import cv2# 从文件中获取视频名称列表和视频网址列表
def getUrlName(filename):_urlList [] # 视频网址列表_fileList [] # 视频名称列表# 读取文件内容并分离视频名称和网址with open(filename, r, encodingutf-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的库。 解决不了的加