python3获取视频文件播放时长的三种方法

 更新时间:2024年04月19日 11:22:12   作者:小龙在山东  
这篇文章主要介绍了python3获取视频文件播放时长的三种方法,VideoFileClip,CV2以及FFmpeg这三种方法,文章通过代码示例给大家讲解的非常详细,需要的朋友可以参考下

方法一:VideoFileClip

from moviepy.editor import VideoFileClip


def get_duration_from_moviepy(url):
    clip = VideoFileClip(url)
    return clip.duration

方法二:CV2

最快。

下载安装:https://github.com/opencv/opencv/releases

pip install opencv-python
import cv2


def get_duration_from_cv2(filename):
  cap = cv2.VideoCapture(filename)
  if cap.isOpened():
    rate = cap.get(5)
    frame_num =cap.get(7)
    duration = frame_num/rate
    return duration
  return -1

方法三:FFmpeg

pip install ffmpy3
import ffmpy3


def get_duration_from_ffmpeg(url):
    tup_resp = ffmpy3.FFprobe(
        inputs={url: None},
        global_options=[
            '-v', 'quiet',
            '-print_format', 'json',
            '-show_format', '-show_streams'
        ]
    ).run(stdout=subprocess.PIPE)

    meta = json.loads(tup_resp[0].decode('utf-8'))
    return meta['format']['duration']

速度比较

import json
import subprocess
import time
import cv2
import ffmpy3
from moviepy.editor import VideoFileClip


ls = [
"https://test/1.mp4",
"http://test/2.mp4",
"https://test/3.mp4"
]


def get_duration_from_cv2(filename):
  cap = cv2.VideoCapture(filename)
  if cap.isOpened():
    rate = cap.get(5)
    frame_num =cap.get(7)
    duration = frame_num/rate
    return duration
  return -1


def get_duration_from_moviepy(url):
    clip = VideoFileClip(url)
    return clip.duration


def get_duration_from_ffmpeg(url):
    tup_resp = ffmpy3.FFprobe(
        inputs={url: None},
        global_options=[
            '-v', 'quiet',
            '-print_format', 'json',
            '-show_format', '-show_streams'
        ]
    ).run(stdout=subprocess.PIPE)

    meta = json.loads(tup_resp[0].decode('utf-8'))
    return meta['format']['duration']


for u in ls:
    t1 = time.time()
    p = get_duration_from_cv2(u)
    t2 = time.time()
    print('CV2 Duration: ', p, ' Time: ', t2 - t1)

    t1 = time.time()
    p = get_duration_from_moviepy(u)
    t2 = time.time()
    print('Moviepy Duration: ', p, ' Time: ', t2 - t1)

    t1 = time.time()
    p = get_duration_from_ffmpeg(u)
    t2 = time.time()
    print('FFMPEG Duration: ', p, ' Time: ', t2 - t1)
    print()

参考

https://ffmpy3.readthedocs.io/en/latest/

到此这篇关于python3获取视频文件播放时长的三种方法的文章就介绍到这了,更多相关python3获取视频播放时长内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python简单实现计算过期时间的方法

    python简单实现计算过期时间的方法

    这篇文章主要介绍了python简单实现计算过期时间的方法,涉及Python时间操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • python 实用工具状态机transitions

    python 实用工具状态机transitions

    这篇文章主要介绍了python 实用工具状态机transitions的使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • Pytorch 如何实现常用正则化

    Pytorch 如何实现常用正则化

    这篇文章主要介绍了Pytorch 实现常用正则化的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 通过Python的filestools库给图片添加全图水印的示例详解

    通过Python的filestools库给图片添加全图水印的示例详解

    这篇文章主要介绍了通过Python的filestools库给图片添加全图水印,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Python实现自动玩连连看的脚本分享

    Python实现自动玩连连看的脚本分享

    最近女朋友在玩连连看,玩了一个星期了还没通关,真的是菜。实在是看不过去了,直接用python写了个脚本代码可以自动玩连连看,感兴趣的可以了解一下
    2022-04-04
  • Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法

    这篇文章主要介绍了Python 基础教程之包和类的用法的相关资料,需要的朋友可以参考下
    2017-02-02
  • python如何与前端交互举例详解

    python如何与前端交互举例详解

    在Web开发中前端与后端之间的数据交互,下面这篇文章主要给大家介绍了关于python如何与前端交互的相关资料,文章通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • 部署Django到阿里云服务器教程示例

    部署Django到阿里云服务器教程示例

    这篇文章主要介绍了部署Django到阿里云服务器教程示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Django发送邮件和itsdangerous模块的配合使用解析

    Django发送邮件和itsdangerous模块的配合使用解析

    这篇文章主要介绍了Django发送邮件和itsdangerous模块的配合使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 深入了解Python中的变量类型标注

    深入了解Python中的变量类型标注

    变量类型注解是用来对变量和函数的参数返回值类型做注解,让调用方减少类型方面的错误,也可以提高代码的可读性和易用性。本文就来和大家聊聊Python中的变量类型标注吧
    2023-04-04

最新评论