python VideoFileClip 获取多级文件目录下的视频时长

from multiprocessing import Process, Queue
import os
from moviepy.editor import VideoFileClip


class FileInfo():

    def __init__(self, file_dir, size, time):
        self.__file_dir = file_dir
        self.__size = size
        self.__time = time

    @property
    def file_dir(self):
        return self.__file_dir

    @property
    def size(self):
        return self.__size

    @property
    def time(self):
        return self.__time

    def get_filename(self):    #获取当前路径下所有非目录文件
        for root, dir, files in os.walk(self.__file_dir):
            return files

    def get_all_files(self, dir):   #该路径下所有视频完整路径
        files_ = []
        list = os.listdir(dir)
        for i in range(0, len(list)):
            path = os.path.join(dir, list[i])
            if os.path.isdir(path):
                files_.extend(self.get_all_files(path))
            if os.path.isfile(path):
                files_.append(path)
        return files_

    def get_filetime(self, filepath):  #返回视频的时长(min)
        clip = VideoFileClip(filepath)
        file_time = clip.duration / 60
        self.__time += file_time
        clip.close()
        return self.__time

video_path = r"C:\Users\JQ\Videos"
file_info = FileInfo(video_path, 0, 0)
whole_path = file_info.get_all_files(video_path)
# 单进程实现
print("=============单进程=================")for fn in whole_path:
    if fn.endswith('.flv'):
        file_info.get_filetime(fn)
print('视频个数:%d,总共%f分钟' % (sum, file_info.time))

 

转载于:https://www.cnblogs.com/jiaoqiang/p/11195346.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值