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实现将JSON文件中的数据格式化处理

    python实现将JSON文件中的数据格式化处理

    JSON是一种轻量级的数据交换格式,常用于Web服务间的数据传输,Python内置了​​json​​模块,能够方便地进行JSON数据的解析与格式化,本文将通过具体的Python代码实例,深入探讨如何将JSON文件中的数据进行格式化处理,需要的朋友可以参考下
    2024-03-03
  • 在tensorflow中设置使用某一块GPU、多GPU、CPU的操作

    在tensorflow中设置使用某一块GPU、多GPU、CPU的操作

    今天小编就为大家分享一篇在tensorflow中设置使用某一块GPU、多GPU、CPU的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python实现博客快速备份的脚本分享

    Python实现博客快速备份的脚本分享

    本文针对博客园实现了一个自动备份脚本,可以快速将自己的文章备份成Markdown格式的独立文件,备份后的md文件可以直接放入到hexo博客中,感兴趣的可以了解一下
    2022-09-09
  • python类方法中的self关键字使用

    python类方法中的self关键字使用

    这篇文章主要介绍了python类方法中的self关键字使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 基于python的itchat库实现微信聊天机器人(推荐)

    基于python的itchat库实现微信聊天机器人(推荐)

    这篇文章主要介绍了基于python的itchat库实现微信聊天机器人,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Pyqt助手安装PyQt5帮助文档过程图解

    Pyqt助手安装PyQt5帮助文档过程图解

    这篇文章主要介绍了Pyqt助手安装PyQt5帮助文档过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python判断变量是否为int、字符串、列表、元组、字典的方法详解

    python判断变量是否为int、字符串、列表、元组、字典的方法详解

    这篇文章主要介绍了python判断变量是否为int、字符串、列表、元组、字典的方法详解,需要的朋友可以参考下
    2020-02-02
  • 一文让你秒懂精通pip并快速体验深度学习应用【建议收藏】

    一文让你秒懂精通pip并快速体验深度学习应用【建议收藏】

    在使用python的时候,经常使用到pip这个工具,可以很方便的线上安装依赖库,当然pip还有很多参数都可以帮我们去查询一些库信息,这篇文章主要给大家介绍了如何通过一篇文章让你秒懂精通pip并快速体验深度学习应用的相关资料,需要的朋友可以参考下
    2021-08-08
  • Python函数常见几种return返回值类型

    Python函数常见几种return返回值类型

    本文主要介绍了Python函数常见几种return返回值类型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Keras 多次加载model出错的解决方案

    Keras 多次加载model出错的解决方案

    这篇文章主要介绍了Keras 多次加载model出错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论