Python爬取视频时长场景实践示例

 更新时间:2022年07月23日 14:46:23   作者:三爷  
这篇文章主要为大家介绍了Python获取视频时长场景实践示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

简介:

在视频相关测试场景下,例如:有时需要知道全部视频的汇总时长,显然一个个打开并且手工计算耗时耗力,我们可以通过编写脚本进行快速汇总。

获取视频时长的方式

1、通过subprocess进行获取。

2、通过moviepy库中VideoFileClip获取。

3、通过cv2库获取。

安装

1、subprocess:无需安装,Python内置。

2、moviepy:pip install moviepy。

3、cv2:pip install opencv-python

准备工序:

1、当前项目新增videos目录。

2、you-get 下载几个视频。python:超实用下载工具you-get

如:下载了两个短视频

获取视频时长的3种方式对比

import cv2
import time
import subprocess
from moviepy.editor import VideoFileClip
def video_duration_1(filename):
    start = time.time()
    result = subprocess.run(["ffprobe", "-v", "error", "-show_entries",
                             "format=duration", "-of",
                             "default=noprint_wrappers=1:nokey=1", filename],
                            stdout=subprocess.PIPE,
                            stderr=subprocess.STDOUT)
    end = time.time()
    spend = end - start
    print("获取视频时长方法1耗时:", spend)
    return float(result.stdout)
def video_duration_2(filename):
    start = time.time()
    clip = VideoFileClip(filename)
    end = time.time()
    spend = end - start
    print("获取视频时长方法2耗时:", spend)
    return float(clip.duration)
def video_duration_3(filename):
    start = time.time()
    cap = cv2.VideoCapture(filename)
    if cap.isOpened():
        rate = cap.get(5)
        frame_num = cap.get(7)
        duration = frame_num / rate
        end = time.time()
        spend = end - start
        print("获取视频时长方法3耗时:", spend)
        return duration
    return -1
if __name__ == '__main__':
    file = r".\videos\mda-mkbhvebqej3cw9yh.mp4"
    video_time_1 = video_duration_1(file)
    print(video_time_1)
    print("*" * 100)
    video_time_2 = video_duration_2(file)
    print(video_time_2)
    print("*" * 100)
    video_time_3 = video_duration_3(file)
    print(video_time_3)

执行源码:

结论:

1、三种方式均可以正常获取视频时长,并且准确。

2、推荐使用cv2获取视频时长,耗时最短。

实践案例:获取文件夹内全部视频总时长

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".\videos"
    total_video_time = video_duration(file)
    print(f"{file} 目录下全部视频总时长为:{total_video_time}秒")

以上就是Python获取视频时长场景实践示例的详细内容,更多关于Python获取视频时长的资料请关注脚本之家其它相关文章!

相关文章

  • Python3 导入上级目录中的模块实例

    Python3 导入上级目录中的模块实例

    今天小编就为大家分享一篇Python3 导入上级目录中的模块实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 深入理解python Matplotlib库的高级特性

    深入理解python Matplotlib库的高级特性

    Matplotlib是一款极其强大的Python数据可视化库,这篇文章中,我们将深入讨论 Matplotlib 的一些高级特性,包括对象导向接口、自定义颜色映射和样式、动态图形等,感兴趣的小伙伴跟着小编一起来探讨吧
    2023-07-07
  • Python实现简单登录验证

    Python实现简单登录验证

    这篇文章主要为大家详细介绍了Python实现简单登录验证的相关资料,需要的朋友可以参考下
    2016-04-04
  • 浅谈Python的list中的选取范围

    浅谈Python的list中的选取范围

    今天小编就为大家分享一篇浅谈Python的list中的选取范围,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python THREADING模块中的JOIN()方法深入理解

    Python THREADING模块中的JOIN()方法深入理解

    这篇文章主要介绍了Python THREADING模块中的JOIN()方法深入理解,本文用简洁易懂的语言总结了对JOIN()方法的理解,不同于其它文章,需要的朋友可以参考下
    2015-02-02
  • Python对称的二叉树多种思路实现方法

    Python对称的二叉树多种思路实现方法

    这篇文章主要介绍了Python对称的二叉树多种思路实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • python3实现表白神器

    python3实现表白神器

    这篇文章主要为大家详细介绍了python3实现表白神器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • python 进程间数据共享multiProcess.Manger实现解析

    python 进程间数据共享multiProcess.Manger实现解析

    这篇文章主要介绍了python 进程间数据共享multiProcess.Manger实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python assert关键字原理及实例解析

    Python assert关键字原理及实例解析

    这篇文章主要介绍了Python assert关键字原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • jupyter notebook更换皮肤主题的实现

    jupyter notebook更换皮肤主题的实现

    这篇文章主要介绍了jupyter notebook更换皮肤主题的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论