使用 Python 统计指定目录下所有视频的总时长并打包成 Windows 可执行文件

内容纲要

使用 Python 统计指定目录下所有视频的总时长并打包成 Windows 可执行文件

在这篇博客中,我们将逐步介绍如何编写一个 Python 脚本来统计指定目录下所有视频文件的总时长,并将其打包成可以在 Windows 上运行的可执行文件(exe)。此外,我们还会实现一个语言选项功能,让用户可以选择中文或英文的控制台输出语言。整个过程将按照金字塔结构逐步展开,确保每一步都清晰易懂。

一、准备工作

在开始编写脚本之前,我们需要确保系统已经安装了一些必要的软件和库:

  1. ffmpeg:一个强大的多媒体处理工具,用于获取视频文件的时长。
  2. Python:我们将使用 Python 来编写脚本。
  3. PyInstaller:用于将 Python 脚本打包成可执行文件。

安装 ffmpeg

在不同操作系统上安装 ffmpeg 的命令如下:

  • Ubuntu/Debian
sudo apt-get install ffmpeg
  • MacOS (使用 Homebrew)
brew install ffmpeg

安装 PyInstaller

使用 pip 安装 PyInstaller:

pip install pyinstaller

二、编写 Python 脚本

接下来,我们将编写一个 Python 脚本来统计指定目录下所有视频文件的总时长,并添加一个语言选项功能。

1. 导入必要的库

首先,我们需要导入 osffmpeg 库:

import os
import ffmpeg

2. 定义获取视频时长的函数

使用 ffmpeg 获取视频文件的时长:

def get_video_duration(file_path):
    try:
        probe = ffmpeg.probe(file_path)
        duration = float(probe['format']['duration'])
        return duration
    except Exception as e:
        print(f"Error processing file {file_path}: {e}")
        return 0

3. 定义获取目录下所有视频总时长的函数

遍历指定目录及其子目录中的所有视频文件,并累加它们的时长:

def get_total_duration(directory):
    total_duration = 0
    video_extensions = ('.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv', '.mpeg', '.mpg', '.webm')  # Add more extensions as needed

    for root, _, files in os.walk(directory):
        for file in files:
            if file.lower().endswith(video_extensions):
                file_path = os.path.join(root, file)
                total_duration += get_video_duration(file_path)

    return total_duration

4. 定义时长格式化函数

将总时长从秒格式化为小时、分钟和秒的形式:

def format_duration(seconds, language):
    hours = int(seconds // 3600)
    minutes = int((seconds % 3600) // 60)
    seconds = int(seconds % 60)
    if language == 'en':
        return f"{hours} hours, {minutes} minutes, {seconds} seconds"
    else:
        return f"{hours}小时, {minutes}分钟, {seconds}秒"

5. 主程序部分

添加语言选择和循环等待功能:

if __name__ == "__main__":
    language = 'zh'  # Default to Chinese
    lang_choice = input("选择语言/Choose Language: 1-中文 2-English (Default: 中文): ")
    if lang_choice == '2':
        language = 'en'

    while True:
        if language == 'en':
            directory = input("Enter the directory path (or 'exit' to quit): ")
        else:
            directory = input("请输入目录路径(输入 'exit' 退出): ")

        if directory.lower() == 'exit':
            break

        if not os.path.isdir(directory):
            if language == 'en':
                print("Invalid directory. Please try again.")
            else:
                print("无效的目录。请重试。")
            continue

        total_duration = get_total_duration(directory)
        formatted_duration = format_duration(total_duration, language)

        if language == 'en':
            print(f"Total duration of all videos: {formatted_duration}")
        else:
            print(f"所有视频的总时长: {formatted_duration}")

三、将 Python 脚本打包成可执行文件

现在,我们已经完成了 Python 脚本的编写,接下来需要将其打包成可执行文件。

1. 将脚本保存为文件

将上述代码保存到一个文件中,例如 video_duration_calculator.py

2. 使用 PyInstaller 打包

打开命令提示符(CMD)并导航到脚本所在的目录,然后运行以下命令:

pyinstaller --onefile video_duration_calculator.py

这个命令会生成一个 dist 目录,里面包含 video_duration_calculator.exe

四、运行生成的 exe 文件

  1. 双击 video_duration_calculator.exe 文件运行程序。
  2. 程序会提示选择语言,输入 12 来选择语言,默认是中文。
  3. 输入目录路径后会计算并显示该目录中所有视频文件的总时长。
  4. 程序会循环等待新的目录路径输入,输入 exit 可以退出程序。

总结

在这篇博客中,我们详细介绍了如何使用 Python 编写一个脚本来统计指定目录下所有视频文件的总时长,并实现语言选项功能。随后,我们使用 PyInstaller 将脚本打包成 Windows 可执行文件,使其更方便使用。通过这种方式,你可以轻松统计视频文件的总时长,合理安排观看计划。希望这篇文章对你有所帮助!

资源下载

源码:

链接:https://pan.baidu.com/s/1LfpAF8GjmmqnL0ovKhHp8A
提取码:44m4

程序:

链接:https://pan.baidu.com/s/112kLcCwtcM2yB2LY2UD7Dg
提取码:613z

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward