python统计mp4/avi视频的时长

news/2024/10/17 10:27:19/

目录

  • 介绍导入的库
    • import os:
    • import moviepy.editor as mp:
    • 总结
  • 代码

介绍导入的库

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

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} 秒")

http://www.ppmy.cn/news/998275.html

相关文章

云计算与大数据领域新指南 | 《揭秘云计算与大数据》助您驾驭数字化浪潮!

日前,《揭秘云计算与大数据》正式上市。这本由国际知名的技术专家撰写的书籍,将带领读者深入了解云计算和大数据领域的技术前沿和应用趋势,为读者呈现一个全面而深入的视角。 随着信息技术的飞速发展,云计算和大数据作为两大前沿…

Rust: error: failed to run custom build command for `openssl-sys v0.9.71`

error: failed to run custom build command for openssl-sys v0.9.71 解决 windows : openssl 不要选Light版 设置环境变量 cmd: set OPENSSL_DIR“C:\Program Files\OpenSSL-Win64” OPENSSL_DIR:C:\Program Files\OpenSSL-Win64 linux&#xff1a…

【Linux】自动化运维管理工具 Ansible

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Ansible Ansible 概述Ansible 环境安装部署Ansible 命令行模块inventory 主机清单 Ansible 概述 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在…

二、数据结构7:KMP 模板题+算法模板(KMP字符串)

文章目录 算法模板KMP题目模板 模板题KMP字符串原题链接题目思路题解 算法模板 KMP题目模板 // s[]是长文本&#xff0c;p[]是模式串&#xff0c;n是s的长度&#xff0c;m是p的长度 求模式串的Next数组&#xff1a; for (int i 2, j 0; i < m; i ) {while (j &&…

acwing 1064 小国王 线性状态压缩DP

输入 3 2输出 16&#x1f37a; AC code #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<vector>using namespace std;typedef long long ll; const int N 12; const int M 1 << 10, K 110;//…

【外卖系统】菜品信息分页查询

需求分析 当菜品数据很多时&#xff0c;用分页的形式来展示列表数据 代码开发 页面发送ajax请求&#xff0c;将分页查询参数提交到服务端&#xff0c;获取分页数据页面发送请求&#xff0c;请求服务端进行图片下载&#xff0c;用于页面图片展示 构造分页 注意&#xff1a;…

2023年7月CSDN客服月报|解决3个重大问题和25个次要问题,处理4个用户需求及建议

听用户心声&#xff0c;解用户之需。hello&#xff0c;大家好&#xff0c;这里是《CSDN客诉报告》第22期&#xff0c;接下来就请大家一同回顾我们7月份解决的bug&#xff5e; 一、重大问题 1、【小程序】会员小程序签到余额及转盘余额未到账 反馈量&#xff1a;14 问题描述…

opencv04-掩膜

opencv04-掩膜 抠图 #include <iostream> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <vector> #include <array> #include <algorithm>using namespace std; using namespace cv;int main() {str…