python统计mp4/avi视频的时长

介绍导入的库

当代码中导入了特定的库,它会使得在代码中可以使用该库所提供的功能和工具。以下是导入的两个库及其作用的解释:

import os:

os(Operating System)是Python标准库之一,提供了与操作系统交互的功能。它允许您在代码中执行各种与文件和目录操作相关的任务,例如创建、删除、移动文件,获取文件属性,以及与操作系统进行交互等。在这个代码中,os库被用于执行文件和目录的遍历操作,从而计算指定文件夹中视频文件的总时长。

import moviepy.editor as mp:

moviepy是一个用于处理视频和音频的Python库,它提供了一组功能丰富的工具,可以用来编辑、剪辑、合并和转换视频和音频文件。其中,moviepy.editor模块提供了视频编辑的基本功能,例如加载视频文件、获取视频时长等。在这个代码中,mp是moviepy.editor的别名,通过这个别名,我们可以使用moviepy库的功能来读取视频文件并获取视频的时长。

总结

os库允许代码与操作系统进行文件和目录操作,而moviepy.editor库则允许代码加载视频文件并执行视频编辑和处理的相关操作。这两个库的结合使得代码能够遍历指定文件夹中的视频文件并计算总时长。

代码

代码即注释,每一行也提供了注释:

# 导入必要的库
import os
import moviepy.editor as mp

# 定义一个函数,用于计算指定文件夹中视频的总时长
def get_total_duration(folder_path, video_formats=['mp4', 'avi']):
    total_duration = 0  # 用于存储视频总时长的变量(单位:秒)

    # 递归地遍历指定文件夹及其子文件夹
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            # 检查文件是否具有指定格式的视频文件
            if file.lower().endswith(tuple(video_formats)):
                file_path = os.path.join(root, file)  # 获取视频文件的完整路径
                try:
                    # 使用 moviepy 的 VideoFileClip 加载视频文件
                    clip = mp.VideoFileClip(file_path)
                    total_duration += clip.duration  # 将视频时长加入总时长
                except Exception as e:
                    # 如果处理视频时发生错误,则打印错误信息
                    print(f"处理 {
      
      file_path} 时出错: {
      
      e}")

    return total_duration  # 返回所有视频总时长(单位:秒)

# 定义一个函数,用于将总秒数转换为时、分、秒格式
def seconds_to_hours_minutes_seconds(seconds):
    hours, remainder = divmod(seconds, 3600)
    minutes, seconds = divmod(remainder, 60)
    return int(hours), int(minutes), int(seconds)

# 脚本的入口点
if __name__ == "__main__":
    # 指定包含视频的文件夹路径
    folder_path = r"你的文件路径"
    
    # 调用 get_total_duration 函数计算文件夹中视频的总时长
    total_duration = get_total_duration(folder_path, video_formats=['mp4', 'avi'])
    
    # 将总时长从秒数转换为时、分、秒格式
    total_hours, total_minutes, total_seconds = seconds_to_hours_minutes_seconds(total_duration)

    # 以人类可读的格式显示总时长
    if total_hours > 0:
        print(f"文件夹中所有视频的总时长为: {
      
      total_hours} 小时 {
      
      total_minutes} 分钟 {
      
      total_seconds} 秒")
        print(f"文件夹中所有视频的总时长为: {
      
      total_hours * 60 + total_minutes} 分钟 {
      
      total_seconds} 秒")
    else:
        print(f"文件夹中所有视频的总时长为: {
      
      total_minutes} 分钟 {
      
      total_seconds} 秒")

猜你喜欢

转载自blog.csdn.net/qq_60735796/article/details/131990408