常常須要看各類視頻教程,不少視頻是flv格式的,視頻分佈在不一樣文件夾,須要看總共一個系列的視頻須要花多長時間。flv格式的視頻,win下沒辦法直接看到時長信息。用python寫了個小程序,來解決這個問題
須要先安裝moviepy庫python
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())))