Python统计某文件夹下全部视频文件(主要针对flv)的时长信息

经常需要看各种视频教程,很多视频是flv格式的,视频分布在不同文件夹,需要看总共一个系列的视频需要花多长时间。flv格式的视频,win下没办法直接看到时长信息。用python写了个小程序,来解决这个问题

需要先安装moviepy库

pip install moviepy

直接上代码了

import os
from moviepy.editor import VideoFileClip
import traceback

class MovieDirUtil():
    def __init__(self,file_dir):
        self.file_dir = file_dir

    def get_filesize(self, filename):
        u"""
        获取文件大小(M: 兆)
        """
        file_byte = os.path.getsize(filename)
        return self.sizeConvert(file_byte)

    def get_file_times(self, filename):
        u"""
        获取视频时长(s:秒)
        """
        file_time = 0
        clip = None
        try:
            clip = VideoFileClip(filename)
            file_time = clip.duration
        except Exception as e:
            traceback.print_exc()
        finally:
            if clip:
                clip.close()
        return file_time

    def sizeConvert(self, size):  # 文件大小单位换算
        K, M, G = 1024, 1024 ** 2, 1024 ** 3
        if size >= G:
            return str(size / G) + 'G Bytes'
        elif size >= M:
            return str(size / M) + 'M Bytes'
        elif size >= K:
            return str(size / K) + 'K Bytes'
        else:
            return str(size) + 'Bytes'

    def timeConvert(self, size):  # 时间单位换算
        M, H = 60, 60 ** 2
        if size < M:
            return str(size) + u'秒'
        if size < H:
            return u'%s分钟%s秒' % (int(size / M), int(size % M))
        else:
            hour = int(size / H)
            mine = int(size % H / M)
            second = int(size % H % M)
            tim_srt = u'%s小时%s分钟%s秒' % (hour, mine, second)
            return tim_srt

    def get_all_file(self):
        u"""
        获取目录下下所有的文件
        """
        file_list = []
        for root, dirs, files in os.walk(file_dir):
            for file in files:
                # begin
                #print(os.path.join(root, file))
                file_list.append(os.path.join(root, file))
                # end
        return file_list

    def get_all_file_duration(self):
        u"""
        获取目录下下所有的文件的播放总时长,单位s
        """
        fileList = self.get_all_file()
        file_duration = 0
        for f in fileList:
            # print(f)
            print(f, mdu.timeConvert(self.get_file_times(f)))
            file_duration += self.get_file_times(f)
        return file_duration

if __name__=="__main__":
    file_dir = u"L:/教程/xxxx/"  # 定义目录地址
    mdu = MovieDirUtil(file_dir)
    print("目录里面包含的视频总共时长为:{duration}".format(duration=mdu.timeConvert(mdu.get_all_file_duration())))

 

转载于:https://my.oschina.net/u/2396236/blog/3031233

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值