Python初学者获取一个文件夹中视频的总时长

1.采用的函数  moviepy、os

首先安装moviepy       

pip install moviepy

2.步骤

(1)先导入我们需要的模块

import moviepy
import os
from moviepy.editor import VideoFileClip

(2)定义一个函数--使用os.walk 把视频文件名称提取出来

def mp4_file(file_path):
    total_time = 0
    for root, dirs, file_name in os.walk(file_path):
        for file_result in file_name:
            data_path = os.path.join(root,file_result)
    
    return total_time

(3)针对文件进行判断是否为后缀mp4的文件,并将我们获取的文件路径和文件名称拼接

if data_path.split('.',1)[-1] == 'mp4':
    clip = VideoFileClip(file_path + "\\" + file_result)
    total_time += clip.duration

#(4)我这里是缺少下面代码会报错显示:OSError: [WinError 6] 句柄无效 在if函数内部补充以下代码

clip.reader.close()
clip.audio.reader.close_proc()

(5)加上文件夹目录

if __name__ == '__main__':
    res = mp4_file("D:\HONORShare\Screenshot")
    print("当前文件夹视频总时长为{}秒".format(res))

3.全部代码:

import moviepy
import os
from moviepy.editor import VideoFileClip

def mp4_file(file_path):
    total_time = 0
    # 循环文件夹下的文件并取出文件的名称(含后缀名)
    for root, dirs, file_name in os.walk(file_path):
        for file_result in file_name:
            data_path = os.path.join(root,file_result)
            #针对文件进行判断其后缀是否是mp4后缀
            if data_path.split('.',1)[-1] == 'mp4':
                # 对文件路径和文件名称进行拼接
                clip = VideoFileClip(file_path + "\\" + file_result)
                total_time += clip.duration
                # 关闭moviepy
                clip.reader.close()
                clip.audio.reader.close_proc()
                print(data_path)
    return total_time

if __name__ == '__main__':
    res = mp4_file("D:\HONORShare\Screenshot")
    print("当前文件夹视频总时长为{}秒".format(res))

4.执行效果:

Python初学者获取一个文件夹中视频的总时长_第1张图片

 ps:打印文件名称是因为该文件夹下还有其他非mp4后缀的文件,查看是否已过滤

感谢支持

你可能感兴趣的:(开发语言,python)