python读取视频长度

import cv2
import os

def video_duration(dir_name):
    sum_duration = 0
    for root, dirs, files in os.walk(dir_name, topdown=False):
        for filename in files:
            cap = cv2.VideoCapture(dir_name + "\\" + filename)
            if cap.isOpened():
                rate = cap.get(5)
                frame_num = cap.get(7)
                duration = frame_num / rate
                sum_duration += duration
    return sum_duration
if __name__ == '__main__':
    file = r"D:\Movie1\神话"
    total_video_time = video_duration(file)
    print("{file} 目录下全部视频总时长为:秒"+total_video_time)
coding=utf8
__author__ = 'Administrator'

import cv2
import os
import time

def video_duration(dir_name):
    sum_duration = 0
    for root, dirs, files in os.walk(dir_name, topdown=False):
        for filename in files:
            cap = cv2.VideoCapture(dir_name + "\\" + filename)
            if cap.isOpened():
                rate = cap.get(5)
                frame_num = cap.get(7)
                duration = frame_num / rate
                sum_duration += duration
    return sum_duration

def test(path):
    mydict={}
    items=[]
    for dirpath, dirnames, filenames in os.walk(path):
        for filename in filenames:
            full_path=os.path.join(dirpath, filename)
            cap = cv2.VideoCapture(full_path)
            if cap.isOpened():
                rate = cap.get(5)
                frame_num = cap.get(7)

                duration = frame_num / rate
                item = int(duration)
                if item not in items:
                    items.append(item)
                mydict[full_path]=item
    return mydict,items

if __name__ == '__main__':
    start =time.time()

    file = r"D:\Movie1\神话"
    # total_video_time = video_duration(file)
    # print("{file} 目录下全部视频总时长为:秒"+str(total_video_time))
    end = time.time()
    cost =end-start
    print("cost:",cost)

    mydict, items= test(file)
    print(items)
    totaldict={}
    for key,v in mydict.items():
        print("key: "+str(key)+"\tv: "+str(v))
        for j in items:
            if v==j:
                if j not in totaldict:
                    totaldict[j]=[key]
                else:
                    totaldict[j]=totaldict[j]+[key]

    for key,v in totaldict.items():
        print("key: "+str(key)+"\tv: "+str(v))
 #最后把相同长度的电影分成了一组

结果如下所示,一个长度对应几个电影的路径

key: 2765 v: [‘D:\Movie1\神话\神话-01.mp4’]
key: 2492 v: [‘D:\Movie1\神话\神话-02.mp4’, ‘D:\Movie1\神话\神话-04.mp4’, ‘D:\Movie1\神话\神话-08.mp4’, ‘D:\Movie1\神话\神话-11.mp4’]
key: 2491 v: [‘D:\Movie1\神话\神话-03.mp4’, ‘D:\Movie1\神话\神话-05.mp4’, ‘D:\Movie1\神话\神话-10.mp4’, ‘D:\Movie1\神话\神话-12.mp4’]
key: 2493 v: [‘D:\Movie1\神话\神话-06.mp4’]
key: 2490 v: [‘D:\Movie1\神话\神话-07.mp4’, ‘D:\Movie1\神话\神话-09.mp4’, ‘D:\Movie1\神话\神话-14.mp4’, ‘D:\Movie1\神话\神话-17.mp4’, ‘D:\Movie1\神话\神话-18.mp4’, ‘D:\Movie1\神话\神话-20.mp4’, ‘D:\Movie1\神话\神话-32.mp4’, ‘D:\Movie1\神话\神话-33.mp4’, ‘D:\Movie1\神话\神话-40.mp4’]
key: 2488 v: [‘D:\Movie1\神话\神话-13.mp4’, ‘D:\Movie1\神话\神话-25.mp4’, ‘D:\Movie1\神话\神话-44.mp4’]
key: 2489 v: [‘D:\Movie1\神话\神话-15.mp4’, ‘D:\Movie1\神话\神话-16.mp4’, ‘D:\Movie1\神话\神话-22.mp4’, ‘D:\Movie1\神话\神话-24.mp4’, ‘D:\Movie1\神话\神话-26.mp4’, ‘D:\Movie1\神话\神话-28.mp4’, ‘D:\Movie1\神话\神话-29.mp4’, ‘D:\Movie1\神话\神话-30.mp4’, ‘D:\Movie1\神话\神话-31.mp4’]
key: 2487 v: [‘D:\Movie1\神话\神话-19.mp4’, ‘D:\Movie1\神话\神话-23.mp4’, ‘D:\Movie1\神话\神话-36.mp4’, ‘D:\Movie1\神话\神话-48.mp4’, ‘D:\Movie1\神话\神话-49.mp4’]
key: 1232 v: [‘D:\Movie1\神话\神话-21.mp4’]
key: 2486 v: [‘D:\Movie1\神话\神话-27.mp4’, ‘D:\Movie1\神话\神话-37.mp4’, ‘D:\Movie1\神话\神话-38.mp4’, ‘D:\Movie1\神话\神话-42.mp4’, ‘D:\Movie1\神话\神话-43.mp4’, ‘D:\Movie1\神话\神话-45.mp4’, ‘D:\Movie1\神话\神话-46.mp4’]
key: 2485 v: [‘D:\Movie1\神话\神话-34.mp4’, ‘D:\Movie1\神话\神话-35.mp4’, ‘D:\Movie1\神话\神话-41.mp4’]
key: 2484 v: [‘D:\Movie1\神话\神话-39.mp4’, ‘D:\Movie1\神话\神话-47.mp4’]
key: 2673 v: [‘D:\Movie1\神话\神话-50end.mp4’]

Original: https://blog.csdn.net/qq_30273575/article/details/126355886
Author: qq_492448446
Title: python读取视频长度

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762767/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python虚拟环境(pipenv、venv、conda一网打尽)

    Python虚拟环境详解 一、什么是虚拟环境 * 1. 什么是Python环境 2. 什么是虚拟环境 3. 常用工具 二、pipenv * 1. 安装pipenv 2. 命令概览 …

    Python 2023年9月8日
    083
  • Pandas实战-筛选DataFrame

    本文将主要介绍以下内容: 针对内存使用优化数据集 按单一条件筛选 按多个条件筛选 其它筛选方法 处理重复项 在前面的文章中,我们练习了从DataFrame中选择单独的行,列和值。现…

    Python 2023年8月8日
    059
  • 全网最全的使用Docker部署Flask教程

    文章目录 1 创建一个最小的Flask应用 * 1.1 app.py文件 1.2 requirements.txt 文件 1.3 Dockerfile文件 1.4 本地文件的目录结…

    Python 2023年8月10日
    097
  • Unity接入微信支付SDK 2022年版安卓篇

    最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼…

    Python 2023年10月21日
    020
  • 前端面试第快速复盘,不标准的面试经验分享 (二)

    壹 ❀ 引 如果说上篇面经能传达拿到 offer的喜悦,那么这篇文章能传达的可能只有各类失败的总结。后续时间我又接触了红杉资本、小满科技、微派网络、作业帮、刀锋互娱,腾讯等。其中有…

    Python 2023年10月20日
    058
  • 全网最详细的Neo4j安装教程

    全网最详细的Neo4j安装教程 一、前言 Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Ja…

    Python 2023年11月5日
    052
  • Pandas 索引对齐、缺失值

    开篇 当在进行Series、DataFrame这两个对象的二元运算时,有稍不同于Numpy的处理方式。 本篇将以组合不同来源的数据为起点,探究其中发生的索引对齐,过程中产生的缺失值…

    Python 2023年8月26日
    048
  • ChatGPT能接入微信了

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月4日
    055
  • 利用python进行数据分析——DataFrame基本操作

    本篇介绍操作Series和DataFrame的基本手段。 1. 对DataFrame的列进行赋值 将列表、数组、元组赋值为DataFrame的列,长度匹配即可 将Series赋值给…

    Python 2023年8月6日
    040
  • 深度学习炼丹-数据预处理和增强

    一,数据增强概述 二,opencv 图像增强-几何变换 三,pytorch 图像增强 四,imgaug 图像增强 参考资料 一,数据增强概述 数据增强(也叫数据扩增)的目的是为了扩…

    Python 2023年10月11日
    043
  • Flask之路由(app.route)详解

    目录 创建路由的两种方式 方式一 方式二 反向生成URL 注意事项 !!! 原因 : 解决 : 总结 : 自定义路由转换器 重定向 在讲创建路由之前先了解大致流程,工作本质 在 r…

    Python 2023年8月9日
    0124
  • 抖音同款课堂点名系统PyQt5写起来很简单

    刷抖音的时候发现一个老师在用的课堂点名系统。用PyQt5实现了一下同款,导入学生姓名,测试了一下完美运行。 【阅读全文】 操作效果展示: 完整的源代码块仍然放在本文的后面,所以您需…

    Python 2023年5月24日
    099
  • 目前UI设计薪资待遇怎么样?工作好找吗?

    UI设计的火爆,导致有很多年轻人都愿意投身于这个行业。有很多年轻的朋友都在问,UI设计的薪资待遇怎么样?工作难找吗?本文统一解答一下。 1、UI设计的薪资水平 UI设计的薪资待遇一…

    Python 2023年10月10日
    045
  • Pandas数据分析20——pandas窗口计算

    参考书目:《深入浅出Pandas:利用Python进行数据处理与分析》 pandas的出生就是为了处理金融数据的,所以在处理时间序列问题上很强。时间序列简单的滑动窗口计算在pand…

    Python 2023年8月19日
    093
  • 【sklearn报错解决方案】UndefinedMetricWarning: Precision is ill-defined and being set to 0.0

    出错描述 使用 sklearn.metrics.precision_score 计算精确率时,出现报错: UndefinedMetricWarning: Precision is …

    Python 2023年8月2日
    0121
  • FastAPI 快速入门

    👑 FastAPI 快速入门 文章目录 👑 FastAPI 快速入门 😉前言 * 一、👻FastApi?? – 1.😎FastAPI可以做什么 2.🚲为什么要学习 Fa…

    Python 2023年8月14日
    056
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球