使用 Python 统计指定目录下所有视频的总时长并打包成 Windows 可执行文件
在这篇博客中,我们将逐步介绍如何编写一个 Python 脚本来统计指定目录下所有视频文件的总时长,并将其打包成可以在 Windows 上运行的可执行文件(exe)。此外,我们还会实现一个语言选项功能,让用户可以选择中文或英文的控制台输出语言。整个过程将按照金字塔结构逐步展开,确保每一步都清晰易懂。
一、准备工作
在开始编写脚本之前,我们需要确保系统已经安装了一些必要的软件和库:
- ffmpeg:一个强大的多媒体处理工具,用于获取视频文件的时长。
- Python:我们将使用 Python 来编写脚本。
- PyInstaller:用于将 Python 脚本打包成可执行文件。
安装 ffmpeg
在不同操作系统上安装 ffmpeg 的命令如下:
- Ubuntu/Debian:
sudo apt-get install ffmpeg
- MacOS (使用 Homebrew):
brew install ffmpeg
- Windows:可以从 ffmpeg 官网 下载并安装。
安装 PyInstaller
使用 pip 安装 PyInstaller:
pip install pyinstaller
二、编写 Python 脚本
接下来,我们将编写一个 Python 脚本来统计指定目录下所有视频文件的总时长,并添加一个语言选项功能。
1. 导入必要的库
首先,我们需要导入 os
和 ffmpeg
库:
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 文件
- 双击
video_duration_calculator.exe
文件运行程序。 - 程序会提示选择语言,输入
1
或2
来选择语言,默认是中文。 - 输入目录路径后会计算并显示该目录中所有视频文件的总时长。
- 程序会循环等待新的目录路径输入,输入
exit
可以退出程序。
总结
在这篇博客中,我们详细介绍了如何使用 Python 编写一个脚本来统计指定目录下所有视频文件的总时长,并实现语言选项功能。随后,我们使用 PyInstaller 将脚本打包成 Windows 可执行文件,使其更方便使用。通过这种方式,你可以轻松统计视频文件的总时长,合理安排观看计划。希望这篇文章对你有所帮助!
资源下载
源码:
链接:https://pan.baidu.com/s/1LfpAF8GjmmqnL0ovKhHp8A
提取码:44m4
程序:
链接:https://pan.baidu.com/s/112kLcCwtcM2yB2LY2UD7Dg
提取码:613z