统计指定目录下所有mp4文件的时长(包含子目录下的文件)

 1 # -*- coding:utf-8 -*-
 2 # Author :Zcb
 3
 4 import os
 5 from moviepy.editor import VideoFileClip
 6
 7 file_Dir = u"e:\\test" #加个u 是表示unicode 一般用在中文字符前
 8 sum_time =0
 9
10 class FileCheck():
11     def __init__(self):
12         self.file_dir = file_Dir
13
14     def get_fileSize(self,fileName):
15         """
16             获取文件大小
17         """
18         file_Byte = os.path.getsize(fileName)
19         return self.sizeConvert(file_Byte)
20
21     def get_file_Times(self,filename):
22         """
23             获取视频时长
24         """
25         global sum_time
26         clip = VideoFileClip(filename)
27         sum_time +=clip.duration
28         file_Times = self.timeConvert(clip.duration)
29         clip.close()  #可以防止程序因为文件过多而报错
30         return file_Times
31     def sizeConvert(self,size): #单位换算
32         K,M,G = 1024,1024**2,1024**3
33         if size >=G:
34             return "{:.3f}G".format(size/G)
35         elif size >=M:
36             return "{:.3f}M".format(size/M)
37         elif size >=K:
38             return "{:.3f}K".format(size/K)
39         else:
40             return "{:.3f}Bytes".format(size)
41     def timeConvert(self,size): #单位换算
42         M ,H = 60,60**2
43         if size <M:
44             return "{:.3f}s".format(size)
45         if size <H:
46             return "{:}m{:.3f}s".format(int(size//M),size%M)
47         else:
48             hour = size//H
49             min = size%H//M
50             sec = size%H%M
51             return "{}h{}m{:.3f}s".format(int(hour),int(min),sec)
52     def get_all_file(self):
53         """
54             获取视频下的所有文件
55         """
56         ls_file =[]
57         for root,dirs,files in os.walk(file_Dir):
58             for file in files:
59                 if "mp4" in file: #只添加mp4文件
60                     ls_file.append(os.path.join(root,file))#当前路径下所有非目录子文件
61         return ls_file
62 print("============开始,文件较多,请耐心等待...")
63 fc = FileCheck()
64
65 fc.get_all_file()
66 files = fc.get_all_file()
67 #print(files)  files 是放文件全名的列表
68 for file in files:
69     file_size = fc.get_fileSize(file)
70     file_times= fc.get_file_Times(file)
71     print("{} {} {}".format(file,file_size,file_times))
72 print("总时长:{}h{}m{:.3f}s".format(int(sum_time/3600),int(sum_time%3600//60),sum_time%3600%60))

主要是运用moviepy 库,也利用了os库获取指定目录下的所有mp4文件

注:参考文档:https://blog.csdn.net/xiaomahuan/article/details/78783174

原文地址:https://www.cnblogs.com/zach0812/p/11277987.html

时间: 2024-10-13 01:10:11

统计指定目录下所有mp4文件的时长(包含子目录下的文件)的相关文章

统计指定目录下面的文件类型及数量

import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * 统计指定目录下面的文件类型及数量 * * @author Administrator * */ public class FileCountTest { // 定义静态变量resultMap,存放

Java扫描指定文件路径下的文件并且递归扫描其子目录下的所有文件

本文主要实现了扫描指定文件路径下的文件,递归扫描其子目录下的所有文件信息,示例文件为: 要求将后缀为.dat的文件夹信息也写入到数据库中,然后将.chk文件解析,将文件中对应的内容读出来写入到数据库,对应类为ChkFileParseFactroy,本文文件发现代码为: 1 package com.src.service.impl; 2 3 import java.io.File; 4 import java.net.InetAddress; 5 import java.net.NetworkIn

统计音频文件总时长

统计音频文件总时长 两种实现方法,调用sox工具,调用python wave库. sox 命令行中键入sox wavfile -n stat -bash-4.2$ sox arctic_a0001.wav -n stat Samples read: 53680 Length (seconds): 3.355000 Scaled by: 2147483647.0 Maximum amplitude: 0.628510 Minimum amplitude: -0.649933 Midline amp

练习:统计指定目录下 每个文件类型的个数

import os def filelist(filepath): filelst=os.listdir(filepath) #产生该目录下文件.文件夹的list.只有文件名和文件夹名,没有路径.注意包含隐藏文件 type_dict=dict() #创建一个空字典,存储文件类型及其个数 for eachFile in filelst: if os.path.isfile(eachFile): #判断是否是文件 type=os.path.splitext(eachFile)[1] #os.path

统计指定目录下的视频时长

有时间可以写成递归的 1 package org.zln.video.demo1; 2 3 import it.sauronsoftware.jave.Encoder; 4 import it.sauronsoftware.jave.EncoderException; 5 import it.sauronsoftware.jave.InputFormatException; 6 import it.sauronsoftware.jave.MultimediaInfo; 7 8 import ja

Perl获取目录下文件或者包含子目录下文件

1 my $dir = "D:\\My_Work\\Temp"; 2 my @files = (); 3 4 #获取给定目录下文件 5 @files = get_dir_files($dir); 6 7 #获取给定目录以及子目录下文件 8 @files = get_dir_files_x($dir); 9 10 #获取目录下以及子目录下文件,返回的结果中包含路径 11 sub get_dir_files_x{ 12 my ($dir_p) = @_; 13 my @files = ()

java获取音频文件播放时长

方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) library is Java wrapper on the ffmpeg project. Developers can take take advantage of JAVE to transcode audio and video files from a format to another. I

shell解压压缩包,求包下所有文本的录音时长总和

#!/bin/bash#from为压缩包批次所在目录#basetarpath 为统计每批次总时长from=$1basetarpath=$2suffix="tgz"todir=$basetarpathoutdir=$basetarpath/home/iflytek/outif [ ! -d? $from ]; thenexitfiif [ ! -d $basetarpath ];thenmkdir -p $basetarpathfifunction jieya(){ ? ? for el

统计指定目录文件夹个数和文件类型和文件总大小

#!/usr/bin/env python# encoding: utf-8"""@author: eguotangseng@file: file_type.py@time: 2020/02/11 """import os """通过给定目录,统计所有的不同子文件类型及占用内存""" size_dict = {}type_dict = {} def get_size_type(path)