统计音频文件时长

  • 功能
  • 代码
  • 主要分析
    • 提取文件的音频时长
    • 读取文件夹下的所有文件的绝对路径

写这个主要是为了能更好的安排自己的学习时间,学习视频的时长很难直观的看总和时间,导致安排的时间没有很好的规划。几经之下还是决定写个程序统计视频总时长,以便更好的安排时间。

功能

可以统计该文件夹下所有音频文件的总时长

代码

下载链接:统计音频文件时长

from pymediainfo import MediaInfo
import json
import os# 传入文件的【绝对地址】,返回文件的【时长】
def duration(files_path):media_info = MediaInfo.parse(files_path)data = media_info.to_json()  # 转成json格式data = json.loads(data)  # 读取json格式# 内容比较多需要细心分析找到自己需要的信息try:  # 防止存在其他类型文件data = data.get('tracks')[1].get('other_duration')[3]  # 提取到文件时长  00:10:40.807return data[:8]  # 秒以下的忽略  00:10:40except:return '00:00:00'# 传入文件夹的【绝对地址】,【列表】形式返回文件夹下的【所有文件的绝对地址】
def root_path(files_path):mp4_path_list = []  # 存放音频文件的绝对地址for root, dirs, files in os.walk(files_path):for f in files:  # 添加音频文件的地址到列表中mp4_path_list.append(os.path.join(root, f))return mp4_path_list# 传入存储时间的列表,返回时间总和
def duration_sum(duration_list):# 创建三个列表存放【时,分,秒】hour_list = []minute_list = []second_list = []for duration_ in duration_list:hour_list.append(int(duration_[:2]))  # 存储【时】minute_list.append(int(duration_[3:5]))  # 存储【分】second_list.append(int(duration_[6:]))  # 存储【秒】# 对时间进行叠加second_sum = sum(second_list)second = second_sum % 60minute_sum = sum(minute_list) + int(second_sum / 60)minute = minute_sum % 60hour_sum = sum(hour_list) + int(minute_sum / 60)hour = hour_sum % 60# 输出该文件夹下的音频总时长print(f'文件下的音频总时长为:{hour}小时{minute}分{second}秒')if __name__ == '__main__':file_path = r"E:\计算机网络\2022版"# file_path = r"E:\计算机网络\2022版\第三章数据链路层"path_list = root_path(file_path)duration_list_ = []  # 用于存储文件时长for path in path_list:duration_list_.append(duration(path))duration_sum(duration_list_)

可以统计文件夹下所有音频时长总和

亦可以统计单个文件夹下所有音频时长总和

主要分析

提取文件的音频时长

读取json文件的分析

  • 读取到的json会很复杂很长
  • 可以先查看json的长度
  • 再定位到自己需要的数据(选择相应的json数据)
  • 此过程可以留意读取和选取后数据的类型
  • 逐步分析即可获取需要的数据

读取文件夹下的所有文件的绝对路径

os.walk() 用法

语法:os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

参数

  • top – 根目录下的每一个文件夹(包含它自己),
    产生3-元组 (dirpath, dirnames, filenames)
    【文件夹路径, 文件夹名字, 文件名】。
  • topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。
  • onerror – 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。
  • followlinks – 设置为 true,则通过软链接访问目录。

统计文件夹下音频文件时长相关推荐

  1. Android 播放raw文件夹下音频文件,本地MP3文件播放,播放云端MP3文件,获取MP3文件播放时长

    1.复制音频文件到raw文件夹下 2.实例化音频文件 private final MediaPlayer.OnCompletionListener beepListener = new MediaPl ...

  2. windows 7 下,如何统计某文件夹下 视频总时长

    由于项目需要,我需要给系统加权限,这真是一个让人头疼的问题,如果要每个业务方法都加上权限判断逻辑,那真的不敢想象是多么大的工作量,日后有变动的话,我会不会发疯? 所以我必须利用之前学到的AOP编程,在 ...

  3. Linux下统计当前文件夹下的文件个数、目录个数

    这篇文章主要介绍了Linux下统计当前文件夹下的文件个数.目录个数,本文使用ls命令配合管理.grep命令实现统计需求,需要的朋友可以参考下 1) 统计当前文件夹下文件的个数 复制代码 代码如下: l ...

  4. 【转】【Linux】Linux下统计当前文件夹下的文件个数、目录个数

    [转][Linux]Linux下统计当前文件夹下的文件个数.目录个数 统计当前文件夹下文件的个数,包括子文件夹里的 ls -lR|grep "^-"|wc -l 统计文件夹下目录的 ...

  5. python 统计文件夹下的文件夹/某类型文件的数目

            用代码读取文件时,有时需要统计某文件夹下所有文件的数目,并读取指定数目的文件!我们通常使用python的os模块完成统计工作,具体方法如下: 1.统计某文件夹下的文件夹和文件的总个数( ...

  6. Linux统计文件夹下的文件数量

    统计某文件夹下目录文件的个数,统计文本文件的数量 Linux下有三个命令:ls.grep.wc 通过这三个命令的组合可以统计目录下文件及文件夹的个数.ls常用命令介绍 统计当前目录下文件的个数(不包括 ...

  7. shell统计当前文件夹下的文件个数、目录个数

    shell统计当前文件夹下的文件个数.目录个数 ls -l |grep "^-"|wc -l //统计当前文件夹下文件的个数 ls -l |grep "^d"| ...

  8. SharePoint 2013创建应用程序时IIS端口文件夹下没文件

    最近SharePoint 2007迁移到2013的时候,碰到创建应用程序时IIS端口文件夹下没文件的问题,网上找了大把的原因,终于在这里找到了解决方案: Fix: 1. Open IIS on the ...

  9. c++语言循环读写文件夹,C++遍历文件夹下所有文件的多种方法

    为数不多的好用的代码,遍历文件夹获取所有子文件名,"filespec"可用通配符"*?".注意如果用相对路径的话,获取所有文件名后应再调用SetInitDir将 ...

最新文章

  1. 裸辞后,从Android转战Web前端的学习以及求职之路
  2. 【线性规划和网络流24题】
  3. mysql x64界面配置版下载_MySQL下载安装、配置与使用(win7x64)
  4. java同名变量在list中添加两次_快速解决List集合add元素,添加多个对象出现重复的问题...
  5. 字体怎么转换html代码,如何设置下列html代码的字体大小和 font-family 以进行水平转换?_html_开发99编程知识库...
  6. Laravel 开发环境搭建
  7. php对象复制,PHP 对象复制 - 对象复制 - phpStudy
  8. 程序员修炼道路上的“葵花宝典”——博文视点大讲堂42期快乐结束
  9. Cisco iOS的两种配置文件(思科命令的保存)
  10. 7.Excel数据分析-员工考勤表
  11. 仿vista桌面小工具
  12. 透明网桥自学习转发帧解题记录
  13. 【BZOJ4199】品酒大会(后缀自动机)
  14. 文档型数据库MongoDB使用教程
  15. HEG运行错误:GetBeginAndEndLocs
  16. 氮化硼修饰导热复合物和碳纤维氮化硼涂层|六方氮化硼修饰石墨化氮化碳复合光催化剂|六方氮化硼(h-BN)修饰玻碳电极(GCE-BN) 氮化物
  17. 知识点(1):OSI网络模型
  18. Java实现短信验证码(阿里云短信服务)
  19. MobileNetv2-SSDLite训练自己的数据集
  20. C++数据结构之哈希表

热门文章

  1. 20年,我为你感叹!
  2. ati自定义分辨率_关于ATI显卡无法保存分辨率设置的完美解决办法!
  3. 用TINA-TI仿真软件来仿真一下电路
  4. java 微信高级群发_Java微信高级群发接口demo--Java学习网
  5. ibatis中choose标签使用
  6. 企业安全事件回顾:企业怎么才能做好源代码防泄露?
  7. 计算机在网站设计中的应用,图形设计在计算机网页设计中的应用研究.doc
  8. 作为rate-based的TCP BBR
  9. 三步教你轻松分辨区块链项目真伪
  10. Borland的MIDAS技术