python统计mp4/avi视频的时长

news/2024/4/20 10:25:42/文章来源:https://blog.csdn.net/qq_60735796/article/details/131990408

目录

  • 介绍导入的库
    • 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.luyixian.cn/news_show_337422.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Segmentation fault 利用 core.xxx文件帮助你debug

在没有get到本文介绍的技能之前的时候,以前遇到程序发生了 Segmentation fault 时,也是一筹莫展,看到伴随程序崩溃而生成的 core.xxxx 文件时(有时会生成,有时不会生成,留着下面介绍)&#xff0…

windows系统之WSL 安装 Ubuntu

WSL windows10 以上才有这个wsl功能 WSL: windows Subsystem for Linux 是应用于Windows系统之上的Linux子系统 作用很简单,可以在Windows系统中获取Linux系统环境,并完全直连计算机硬件,无需要通过虚拟机虚拟硬件 Windows10的W…

TCP网络通信编程之字符流

【案例1】 【题目描述】 【 注意事项】 (3条消息) 节点流和处理流 字符处理流BufferedReader、BufferedWriter,字节处理流-BufferedInputStream和BufferedOutputStream (代码均正确且可运行_Studying~的博客-CSDN博客 1。这里需要使用字符处理流,来将…

C++代码格式化工具clang-format详细介绍

文章目录 clang-format思考代码风格指南生成您的配置运行 clang-format禁用一段代码的格式设置clang-format的设置预览 clang-format 我曾在许多编程团队工作过,这些团队名义上都有“编程风格指南”。该指南经常被写下来并放置在开发人员很少查看的地方。几乎在每种…

MQTT服务器详细介绍:连接物联网的通信枢纽

随着物联网技术的不断发展,MQTT(Message Queuing Telemetry Transport)协议作为一种轻量级、可靠、灵活的通信协议,被广泛应用于物联网领域。在MQTT系统中,MQTT服务器扮演着重要的角色,作为连接物联网设备和…

常见网关对比

常见网关对比 目前常见的开源网关大致上按照语言分类有如下几类: Nginxlua :OpenResty、Kong、Orange、Abtesting gateway 等 Java :Zuul/Zuul2、Spring Cloud Gateway、Kaazing KWG、gravitee、Dromara soul 等 Go :Janus、fa…

计算机里基本硬件的组成以及硬件协同

文章目录 冯诺依曼体系输入设备输出设备存储器运算器控制器协同工作的流程 冯诺依曼体系 世界上第一台通用计算机,ENIAC,于1946年诞生于美国一所大学。 ENIAC研发的前期,需要工作人员根据提前设计好的指令手动接线,以这种方式输入…

【HDFS】Block、BlockInfo、BlockInfoContiguous、BlockInfoStriped的分析记录

本文主要介绍如下内容: 关于几个Block类之间的继承、实现关系;针对文章标题中的每个类,细化到每个成员去注释分析列出、并详细分析BlockInfo抽象类提供的抽象方法、非抽象方法的功能针对几个跟块组织结构的方法再进行分析。moveBlockToHead、listInsert、listRemove等。一、…

spring5源码篇(13)——spring mvc无xml整合tomcat与父子容器的启动

spring-framework 版本:v5.3.19 文章目录 整合步骤实现原理ServletContainerInitializer与WebApplicationInitializer父容器的启动子容器的启动 相关面试题 整合步骤 试想这么一个场景。只用 spring mvc(确切来说是spring-framework)&#x…

MySQL 实现分库和分表的备份 2023.7.29

1、分库备份 [rootlocalhost mysql-backup]# cat db_bak.sh #!/bin/bash k_userroot bak_password123456 bak_path/root/mysql-backup/ bak_cmd"-u$bak_user -p$bak_password" exc_db"Database|information_schema|mysql|performance_schema|sys" dbname…

C#,数值计算——对数正态分布(logarithmic normal distribution)的计算方法与源程序

对数正态分布(logarithmic normal distribution)是指一个随机变量的对数服从正态分布,则该随机变量服从对数正态分布。对数正态分布从短期来看,与正态分布非常接近。但长期来看,对数正态分布向上分布的数值更多一些。 …

基于minio的dababend部署总结

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。 Minio搭建 minio 192.168.10.159 cd /data mkdir minio cd minio wget https://dl…

word2vec原理总结

参考文章:https://www.cnblogs.com/pinard/p/7160330.html word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。 1 词向量编码 1.1 one…

Unity源码分享-黄金矿工游戏完整版

Unity源码分享-黄金矿工游戏完整版 项目地址:https://download.csdn.net/download/Highning0007/88118933

Python-Python基础综合案例--数据可视化 - 地图可视化

版本说明 当前版本号[20230729]。 版本修改说明20230729初版 目录 文章目录 版本说明目录知识总览图Python基础综合案例--数据可视化 - 地图可视化基础地图使用案例效果视觉映射器 疫情地图-国内疫情地图案例效果实操设置全局配置选项 疫情地图-省级疫情地图案例效果实操 知…

如何做好IT类的技术面试

目录 一、IT行业的招聘渠道 二、如何做好技术面试官 三、谈谈IT行业如何做好招聘工作 四、面试IT公司的小技巧 五、面试有哪些常见的问题 六、关于面试的一些建议 面试可能是我们每个人都必须会遇到的事情,而技术面试更具有专业性,以下会从几个方面…

IDEA将本地项目上传到码云

一、创建本地仓库并关联 用IDEA打开项目,在菜单栏点击vcs->create git repository创建本地仓库, 选择当前项目所在的文件夹当作仓库目录。 二、将项目提交本地仓库 项目名右键就会出现“GIT”这个选项->Add->Commit Directory, 先将项目add…

sql server表值函数

一、创建测试表 Employees 二、创建表值函数 -- DROP FUNCTION TableIntSplit;CREATE FUNCTION TableIntSplit(Text NVARCHAR(4000),Sign NVARCHAR(4000)) RETURNS tempTable TABLE(Id INT ) AS BEGIN DECLARE StartIndex INT DECLARE FindIndex INT DECLARE Content VARCHAR(…

玩转Tomcat:从安装到部署

文章目录 一、什么是 Tomcat二、Tomcat 的安装与使用2.1 下载安装2.2 目录结构2.3 启动 Tomcat 三、部署程序到 Tomcat3.1 Windows环境3.2 Linux环境 一、什么是 Tomcat 一看到 Tomcat,我们一般会想到什么?没错,就是他,童年的回忆…

操作系统攻击:早期WindowsMS10-046漏洞

目录 概述 漏洞成因 利用过程 漏洞复现 漏洞修复 概述 本次介绍早期的windows高危漏洞——MS10_046_SHORTCUT_ICON_DLLLOADER , 该漏洞可以通过浏览器跳转网络资源的方式利用,结合xss攻击用户的系统 危险性极高。 漏洞成因 漏洞成因: m…